Bonjour,
Je me retrouve bloqu=E9 face =E0 un petit souci, dans le cadre d''une
lecture de fichier en s=E9quentiel.
En fait, je souhaiterais utiliser une expression r=E9guli=E8re qui me
permette de prendre en compte uniquement les lignes non vides, ne
commen=E7ant ni par HDR, ni par TRL, mais je ne vois pas trop comment
parvenir =E0 mes fins...
Quelqu'un peut-il m'aider ?
Merci par avance,
Christophe
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
Paul Gaborit
À (at) Mon, 12 Dec 2011 06:09:51 -0800 (PST), titof92 écrivait (wrote):
Je me retrouve bloqué face à un petit souci, dans le cadre d''une lecture de fichier en séquentiel. En fait, je souhaiterais utiliser une expression régulière qui me permette de prendre en compte uniquement les lignes non vides, ne commençant ni par HDR, ni par TRL, mais je ne vois pas trop comment parvenir à mes fins... Quelqu'un peut-il m'aider ? Merci par avance,
En supposant que le filehandle du fichier ouvert en lecture est $fichier :
while (<$fichier>) { next if m/^$/; # on saute les lignes vides next if m/^HDR/; # on saute les lignes commençant par HDR next if m/^TRL/; # on saute les lignes commençant par TRL
# ici on traite la ligne courante (elle est dans $_) }
On peut tout faire en une seule regexp (mais c'est moins lisible) :
while (<$fichier>) { # on saute les lignes vides ou commençant par HDR ou TRL next if m/^(?:$|HDR|TRL)/;
# ici on traite la ligne courante (elle est dans $_) }
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
À (at) Mon, 12 Dec 2011 06:09:51 -0800 (PST),
titof92 <titof92@libertysurf.fr> écrivait (wrote):
Je me retrouve bloqué face à un petit souci, dans le cadre d''une
lecture de fichier en séquentiel.
En fait, je souhaiterais utiliser une expression régulière qui me
permette de prendre en compte uniquement les lignes non vides, ne
commençant ni par HDR, ni par TRL, mais je ne vois pas trop comment
parvenir à mes fins...
Quelqu'un peut-il m'aider ?
Merci par avance,
En supposant que le filehandle du fichier ouvert en lecture est
$fichier :
while (<$fichier>) {
next if m/^$/; # on saute les lignes vides
next if m/^HDR/; # on saute les lignes commençant par HDR
next if m/^TRL/; # on saute les lignes commençant par TRL
# ici on traite la ligne courante (elle est dans $_)
}
On peut tout faire en une seule regexp (mais c'est moins lisible) :
while (<$fichier>) {
# on saute les lignes vides ou commençant par HDR ou TRL
next if m/^(?:$|HDR|TRL)/;
# ici on traite la ligne courante (elle est dans $_)
}
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
À (at) Mon, 12 Dec 2011 06:09:51 -0800 (PST), titof92 écrivait (wrote):
Je me retrouve bloqué face à un petit souci, dans le cadre d''une lecture de fichier en séquentiel. En fait, je souhaiterais utiliser une expression régulière qui me permette de prendre en compte uniquement les lignes non vides, ne commençant ni par HDR, ni par TRL, mais je ne vois pas trop comment parvenir à mes fins... Quelqu'un peut-il m'aider ? Merci par avance,
En supposant que le filehandle du fichier ouvert en lecture est $fichier :
while (<$fichier>) { next if m/^$/; # on saute les lignes vides next if m/^HDR/; # on saute les lignes commençant par HDR next if m/^TRL/; # on saute les lignes commençant par TRL
# ici on traite la ligne courante (elle est dans $_) }
On peut tout faire en une seule regexp (mais c'est moins lisible) :
while (<$fichier>) { # on saute les lignes vides ou commençant par HDR ou TRL next if m/^(?:$|HDR|TRL)/;
# ici on traite la ligne courante (elle est dans $_) }
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
azrazer
Bonjour, une expression régulière basique fonctionnerait, non ? du genre foreach my $line (<$FICHIER>){ if ($line !~ /^$|^HDR|^TRL){ ... } }
???? Est-ce que cela est suffisant ??
Cordialement,
azra..
# exemple .... use strict; use warnings; foreach my $line (<DATA>){ if ($line !~ /^$|^HDR|^TRL/){ print $line; } } __DATA__ Ligne1
Ligne3 TRL Ligne4 Ligne5 HDR Ligne6 Ligne7
#EOF# Le 12/12/2011 15:09, titof92 a écrit :
Bonjour, Je me retrouve bloqué face à un petit souci, dans le cadre d''une lecture de fichier en séquentiel. En fait, je souhaiterais utiliser une expression régulière qui me permette de prendre en compte uniquement les lignes non vides, ne commençant ni par HDR, ni par TRL, mais je ne vois pas trop comment parvenir à mes fins... Quelqu'un peut-il m'aider ? Merci par avance, Christophe
Bonjour,
une expression régulière basique fonctionnerait, non ?
du genre
foreach my $line (<$FICHIER>){
if ($line !~ /^$|^HDR|^TRL){
...
}
}
????
Est-ce que cela est suffisant ??
Cordialement,
azra..
# exemple ....
use strict;
use warnings;
foreach my $line (<DATA>){
if ($line !~ /^$|^HDR|^TRL/){
print $line;
}
}
__DATA__
Ligne1
Ligne3
TRL Ligne4
Ligne5
HDR Ligne6
Ligne7
#EOF#
Le 12/12/2011 15:09, titof92 a écrit :
Bonjour,
Je me retrouve bloqué face à un petit souci, dans le cadre d''une
lecture de fichier en séquentiel.
En fait, je souhaiterais utiliser une expression régulière qui me
permette de prendre en compte uniquement les lignes non vides, ne
commençant ni par HDR, ni par TRL, mais je ne vois pas trop comment
parvenir à mes fins...
Quelqu'un peut-il m'aider ?
Merci par avance,
Christophe
Bonjour, une expression régulière basique fonctionnerait, non ? du genre foreach my $line (<$FICHIER>){ if ($line !~ /^$|^HDR|^TRL){ ... } }
???? Est-ce que cela est suffisant ??
Cordialement,
azra..
# exemple .... use strict; use warnings; foreach my $line (<DATA>){ if ($line !~ /^$|^HDR|^TRL/){ print $line; } } __DATA__ Ligne1
Ligne3 TRL Ligne4 Ligne5 HDR Ligne6 Ligne7
#EOF# Le 12/12/2011 15:09, titof92 a écrit :
Bonjour, Je me retrouve bloqué face à un petit souci, dans le cadre d''une lecture de fichier en séquentiel. En fait, je souhaiterais utiliser une expression régulière qui me permette de prendre en compte uniquement les lignes non vides, ne commençant ni par HDR, ni par TRL, mais je ne vois pas trop comment parvenir à mes fins... Quelqu'un peut-il m'aider ? Merci par avance, Christophe