J'ai un fichier contenant du texte extrait d'une base (Lotus notes).
Lorsque je lis ce fichier (ave Open, ou Sysopen), la lecture s'arrête en
milieu de fichier à cause d'un caractére (un carré sous UltraEdit). Le code
Hexa de ce caractére est 1A.
Y-a-t'il une solution pour que Perl ne prenne pas ce caractére comme étant
la fin du fichier ? (Aucune erreur n'est detectée, il arrête vraiment la
lecture comme ci c'était la fin du fichier...:(
Voici les codes utilisés pour les tests de lecture:
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Yoann Wyffels
J'ai trouvé une solution "temporaire" à ce problème, il suffit de lire le fichier en mode binaire. Par contre, sur de gros fichiers, le mode binaire est extrêmenent lent....
Code pour lire le fichier: open(FILE,"temp.txt"); binmode(FILE); while(<FILE>){
... } close(FILE);
"Yoann Wyffels" a écrit dans le message de news:414747e8$0$17689$
Bonjour,
J'ai un fichier contenant du texte extrait d'une base (Lotus notes). Lorsque je lis ce fichier (ave Open, ou Sysopen), la lecture s'arrête en milieu de fichier à cause d'un caractére (un carré sous UltraEdit). Le code
Hexa de ce caractére est 1A. Y-a-t'il une solution pour que Perl ne prenne pas ce caractére comme étant la fin du fichier ? (Aucune erreur n'est detectée, il arrête vraiment la lecture comme ci c'était la fin du fichier...:(
Voici les codes utilisés pour les tests de lecture:
=========================== > sysopen(FILE, "C:/temp.txt", 0); while(<FILE>){ print "$_n"; } close(FILE); ============================ > open(FILE,"C:/temp.txt"); while(<FILE>){ print "$_n"; } close(FILE); ============================= > open(FILE,"C:/temp.txt"); @tab=<FILE>; close(FILE); ============================= > Aucun n'est passé outre ce faux caractére de fin de fichier.
PS: Je suis sous ActivePerl 5.6.1 sous Windows XP.
Merci. Yoann.
--
J'ai trouvé une solution "temporaire" à ce problème, il suffit de lire le
fichier en mode binaire. Par contre, sur de gros fichiers, le mode binaire
est extrêmenent lent....
Code pour lire le fichier:
open(FILE,"temp.txt");
binmode(FILE);
while(<FILE>){
...
}
close(FILE);
"Yoann Wyffels" <yoann.wyffels@wanadoo.fr> a écrit dans le message de
news:414747e8$0$17689$626a14ce@news.free.fr...
Bonjour,
J'ai un fichier contenant du texte extrait d'une base (Lotus notes).
Lorsque je lis ce fichier (ave Open, ou Sysopen), la lecture s'arrête en
milieu de fichier à cause d'un caractére (un carré sous UltraEdit). Le
code
Hexa de ce caractére est 1A.
Y-a-t'il une solution pour que Perl ne prenne pas ce caractére comme étant
la fin du fichier ? (Aucune erreur n'est detectée, il arrête vraiment la
lecture comme ci c'était la fin du fichier...:(
Voici les codes utilisés pour les tests de lecture:
=========================== > sysopen(FILE, "C:/temp.txt", 0);
while(<FILE>){
print "$_n";
}
close(FILE);
============================ > open(FILE,"C:/temp.txt");
while(<FILE>){
print "$_n";
}
close(FILE);
============================= > open(FILE,"C:/temp.txt");
@tab=<FILE>;
close(FILE);
============================= >
Aucun n'est passé outre ce faux caractére de fin de fichier.
PS: Je suis sous ActivePerl 5.6.1 sous Windows XP.
J'ai trouvé une solution "temporaire" à ce problème, il suffit de lire le fichier en mode binaire. Par contre, sur de gros fichiers, le mode binaire est extrêmenent lent....
Code pour lire le fichier: open(FILE,"temp.txt"); binmode(FILE); while(<FILE>){
... } close(FILE);
"Yoann Wyffels" a écrit dans le message de news:414747e8$0$17689$
Bonjour,
J'ai un fichier contenant du texte extrait d'une base (Lotus notes). Lorsque je lis ce fichier (ave Open, ou Sysopen), la lecture s'arrête en milieu de fichier à cause d'un caractére (un carré sous UltraEdit). Le code
Hexa de ce caractére est 1A. Y-a-t'il une solution pour que Perl ne prenne pas ce caractére comme étant la fin du fichier ? (Aucune erreur n'est detectée, il arrête vraiment la lecture comme ci c'était la fin du fichier...:(
Voici les codes utilisés pour les tests de lecture:
=========================== > sysopen(FILE, "C:/temp.txt", 0); while(<FILE>){ print "$_n"; } close(FILE); ============================ > open(FILE,"C:/temp.txt"); while(<FILE>){ print "$_n"; } close(FILE); ============================= > open(FILE,"C:/temp.txt"); @tab=<FILE>; close(FILE); ============================= > Aucun n'est passé outre ce faux caractére de fin de fichier.
PS: Je suis sous ActivePerl 5.6.1 sous Windows XP.
J'ai un fichier contenant du texte extrait d'une base (Lotus notes). Lorsque je lis ce fichier (ave Open, ou Sysopen), la lecture s'arrête en milieu de fichier à cause d'un caractére (un carré sous UltraEdit). Le code Hexa de ce caractére est 1A. Y-a-t'il une solution pour que Perl ne prenne pas ce caractére comme étant la fin du fichier ? (Aucune erreur n'est detectée, il arrête vraiment la lecture comme ci c'était la fin du fichier...:( [...]
PS: Je suis sous ActivePerl 5.6.1 sous Windows XP.
Le caractère de code 1A correspond à Ctrl-Z qui sous Windows signifie 'fin de fichier' (texte). D'ailleurs votre programme ne peut pas lire ce caractère. La solution est d'ouvrir le fichier en mode binaire.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
J'ai un fichier contenant du texte extrait d'une base (Lotus notes).
Lorsque je lis ce fichier (ave Open, ou Sysopen), la lecture s'arrête en
milieu de fichier à cause d'un caractére (un carré sous UltraEdit). Le code
Hexa de ce caractére est 1A.
Y-a-t'il une solution pour que Perl ne prenne pas ce caractére comme étant
la fin du fichier ? (Aucune erreur n'est detectée, il arrête vraiment la
lecture comme ci c'était la fin du fichier...:(
[...]
PS: Je suis sous ActivePerl 5.6.1 sous Windows XP.
Le caractère de code 1A correspond à Ctrl-Z qui sous Windows signifie 'fin de
fichier' (texte). D'ailleurs votre programme ne peut pas lire ce caractère. La
solution est d'ouvrir le fichier en mode binaire.
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
J'ai un fichier contenant du texte extrait d'une base (Lotus notes). Lorsque je lis ce fichier (ave Open, ou Sysopen), la lecture s'arrête en milieu de fichier à cause d'un caractére (un carré sous UltraEdit). Le code Hexa de ce caractére est 1A. Y-a-t'il une solution pour que Perl ne prenne pas ce caractére comme étant la fin du fichier ? (Aucune erreur n'est detectée, il arrête vraiment la lecture comme ci c'était la fin du fichier...:( [...]
PS: Je suis sous ActivePerl 5.6.1 sous Windows XP.
Le caractère de code 1A correspond à Ctrl-Z qui sous Windows signifie 'fin de fichier' (texte). D'ailleurs votre programme ne peut pas lire ce caractère. La solution est d'ouvrir le fichier en mode binaire.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>