OVH Cloud OVH Cloud

regexp sur les carctères ascii

6 réponses
Avatar
Ben
Bonjour à tous ;)

J'explique mon problème :
Je dois lire un fichier et faire des traitement sur chaque ligne.
Malheureusment, les fichiers sont issus d'un soft peu pourri
et je me retrouve avec de caractères de fin de fichier en plein millieu,
ce qui empeche perl de poursuivre sa lecture.
Je cherche donc un moyen de dire à perl que tous les caractères dont le code
ascii est inférieur à 1F doivent être supprimés avant interprétation des
lignes.
Bref le top serait une regexp qui prendrait le fichier dans sa globalité, et
supprimerait
les caractères foireux... mais je n'arrive à rien du tout...et le substr
couplé à un chr(XX)
se traine un peu...
Envoyez les idées et aussi les commentaires

Merci de m'avoir lu, et bonne journée ;o)

Benjamin.

6 réponses

Avatar
Paul GABORIT
À (at) Thu, 8 Jan 2004 12:38:04 +0100,
"Ben" écrivait (wrote):
J'explique mon problème :
Je dois lire un fichier et faire des traitement sur chaque ligne.
Malheureusment, les fichiers sont issus d'un soft peu pourri
et je me retrouve avec de caractères de fin de fichier en plein millieu,
ce qui empeche perl de poursuivre sa lecture.


Qu'est-ce que c'est "un caractère de fin de fichier" ?

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>

Avatar
Laurent Wacrenier
Ben écrit:
Je dois lire un fichier et faire des traitement sur chaque ligne.
Malheureusment, les fichiers sont issus d'un soft peu pourri
et je me retrouve avec de caractères de fin de fichier en plein millieu,
ce qui empeche perl de poursuivre sa lecture.


perldoc -f binmode

Avatar
Laurent Wacrenier
Paul GABORIT écrit:
Qu'est-ce que c'est "un caractère de fin de fichier" ?


Sur certains OS, la fin d'un fichier texte est représentée par un
caractère alors qu'il pourrait y avoir d'autres données derrière.

Avatar
Ben
Bon j'ai la reponse à un bout du problème, je sais maintenant lire le
fichier
tout entier (merci à Laurent ;) )
Par contre je n'arrive pas à faire une regexp qui me supprime des caractères
en fonction de leur code ascii, genre :
$contenu_fichier = s/chr(1F)//g pour supprimer les caract "fin de
fichier"
qqun peut m'aider ?





"Ben" a écrit dans le message de news:
btjfes$2rj7$
Bonjour à tous ;)

J'explique mon problème :
Je dois lire un fichier et faire des traitement sur chaque ligne.
Malheureusment, les fichiers sont issus d'un soft peu pourri
et je me retrouve avec de caractères de fin de fichier en plein millieu,
ce qui empeche perl de poursuivre sa lecture.
Je cherche donc un moyen de dire à perl que tous les caractères dont le
code

ascii est inférieur à 1F doivent être supprimés avant interprétation des
lignes.
Bref le top serait une regexp qui prendrait le fichier dans sa globalité,
et

supprimerait
les caractères foireux... mais je n'arrive à rien du tout...et le substr
couplé à un chr(XX)
se traine un peu...
Envoyez les idées et aussi les commentaires

Merci de m'avoir lu, et bonne journée ;o)

Benjamin.




Avatar
Laurent Wacrenier
Ben écrit:
Par contre je n'arrive pas à faire une regexp qui me supprime des caractères
en fonction de leur code ascii, genre :
$contenu_fichier = s/chr(1F)//g pour supprimer les caract "fin de


s/x1F//g

ou mieux : tr/x1F//d

Avatar
Ben
"Laurent Wacrenier" <lwa@ teaser . fr> a écrit dans le message de news:

Ben écrit:
Par contre je n'arrive pas à faire une regexp qui me supprime des
caractères


en fonction de leur code ascii, genre :
$contenu_fichier = s/chr(1F)//g pour supprimer les caract "fin de


s/x1F//g

ou mieux : tr/x1F//d


bon bah ok, c t pourtant pas dur...et j'suis passé à côté ;o/
merci tout plein pour ton aide ;o)