Je parse un fichier, et j'aimerais faire qq opérations sur les lignes.
En particulier, je recherche certains motifs
open(FILE, "< $file") or die "Cannot open $file: $!";
while (my $line = <FILE>)
{
chomp $line;
if ($line =~ m/aaa([\w]+)aaa/g)
{
$line =~ s|($1)|[$1]|g;
etc ...
}
}
close FILE;
Voici mes questions :
- le motif que je recherche peut apparaître plusieurs fois sur une
même ligne : comment "mémoriser" (dans les $1, et suivants) toutes
les occurrences ? car j'en ai besoin pour la suite.
- comment faire pour que toutes ces occurrences subissent la même
transformation (avec le s//) ?
En espérant avoir été suffisament clair.
Merci de votre aide,
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
Rue des Prairies
Paul Bert wrote:
Bonsoir,
Je parse un fichier, et j'aimerais faire qq opérations sur les lignes. En particulier, je recherche certains motifs
open(FILE, "< $file") or die "Cannot open $file: $!"; while (my $line = <FILE>) { chomp $line;
if ($line =~ m/aaa([w]+)aaa/g) { $line =~ s|($1)|[$1]|g; etc ... } } close FILE;
Voici mes questions :
- le motif que je recherche peut apparaître plusieurs fois sur une même ligne : comment "mémoriser" (dans les $1, et suivants) toutes les occurrences ? car j'en ai besoin pour la suite.
- comment faire pour que toutes ces occurrences subissent la même transformation (avec le s//) ?
En espérant avoir été suffisament clair. Merci de votre aide,
P. Bert
Bonjour,
Je ne comprend pas bien ce que tu veux dire par mémoriser toutes les occurrences, si c'est simplement les compter, tu peux faire :
while ($ligne =~ s/aaa([w]+)aaa/[$1]/) { $cpt++; }
d'autre part, je pressent une erreur dans l'expression, [w] signifie : le caractère ou le caractère w, est-ce bien ce que tu cherches ?
Olivier.
Paul Bert wrote:
Bonsoir,
Je parse un fichier, et j'aimerais faire qq opérations sur les lignes.
En particulier, je recherche certains motifs
open(FILE, "< $file") or die "Cannot open $file: $!";
while (my $line = <FILE>)
{
chomp $line;
if ($line =~ m/aaa([w]+)aaa/g)
{
$line =~ s|($1)|[$1]|g;
etc ...
}
}
close FILE;
Voici mes questions :
- le motif que je recherche peut apparaître plusieurs fois sur une
même ligne : comment "mémoriser" (dans les $1, et suivants) toutes
les occurrences ? car j'en ai besoin pour la suite.
- comment faire pour que toutes ces occurrences subissent la même
transformation (avec le s//) ?
En espérant avoir été suffisament clair.
Merci de votre aide,
P. Bert
Bonjour,
Je ne comprend pas bien ce que tu veux dire par mémoriser toutes les
occurrences, si c'est simplement les compter, tu peux faire :
while ($ligne =~ s/aaa([w]+)aaa/[$1]/) {
$cpt++;
}
d'autre part, je pressent une erreur dans l'expression, [w] signifie :
le caractère ou le caractère w, est-ce bien ce que tu cherches ?
Je parse un fichier, et j'aimerais faire qq opérations sur les lignes. En particulier, je recherche certains motifs
open(FILE, "< $file") or die "Cannot open $file: $!"; while (my $line = <FILE>) { chomp $line;
if ($line =~ m/aaa([w]+)aaa/g) { $line =~ s|($1)|[$1]|g; etc ... } } close FILE;
Voici mes questions :
- le motif que je recherche peut apparaître plusieurs fois sur une même ligne : comment "mémoriser" (dans les $1, et suivants) toutes les occurrences ? car j'en ai besoin pour la suite.
- comment faire pour que toutes ces occurrences subissent la même transformation (avec le s//) ?
En espérant avoir été suffisament clair. Merci de votre aide,
P. Bert
Bonjour,
Je ne comprend pas bien ce que tu veux dire par mémoriser toutes les occurrences, si c'est simplement les compter, tu peux faire :
while ($ligne =~ s/aaa([w]+)aaa/[$1]/) { $cpt++; }
d'autre part, je pressent une erreur dans l'expression, [w] signifie : le caractère ou le caractère w, est-ce bien ce que tu cherches ?
Olivier.
Paul Bert
In article <bonhud$crn$, Rue des Prairies wrote:
Paul Bert wrote:
Bonsoir,
Je parse un fichier, et j'aimerais faire qq opérations sur les lignes. En particulier, je recherche certains motifs
open(FILE, "< $file") or die "Cannot open $file: $!"; while (my $line = <FILE>) { chomp $line;
if ($line =~ m/aaa([w]+)aaa/g) { $line =~ s|($1)|[$1]|g; etc ... } } close FILE;
Voici mes questions :
- le motif que je recherche peut apparaître plusieurs fois sur une même ligne : comment "mémoriser" (dans les $1, et suivants) toutes les occurrences ? car j'en ai besoin pour la suite.
- comment faire pour que toutes ces occurrences subissent la même transformation (avec le s//) ?
En espérant avoir été suffisament clair. Merci de votre aide,
P. Bert
Bonjour,
Je ne comprend pas bien ce que tu veux dire par mémoriser toutes les occurrences, si c'est simplement les compter, tu peux faire :
while ($ligne =~ s/aaa([w]+)aaa/[$1]/) { $cpt++; }
Non, pas les compter. Je souhaite ensuite faire 2 choses : - les stocker dans un tableau - modifier $line pour ajouter des balises autour de ces motifs. Typiquement, ce sera du html, et je veux donc mettre des <b></b> autour.
d'autre part, je pressent une erreur dans l'expression, [w] signifie : le caractère ou le caractère w, est-ce bien ce que tu cherches ?
Euh effectivment pas. Je croyais que w correspondait aux caractères alphanumériques et au _, je me trompe ?
Merci.
Paul
In article <bonhud$crn$1@news-reader1.wanadoo.fr>, Rue des Prairies wrote:
Paul Bert wrote:
Bonsoir,
Je parse un fichier, et j'aimerais faire qq opérations sur les lignes.
En particulier, je recherche certains motifs
open(FILE, "< $file") or die "Cannot open $file: $!";
while (my $line = <FILE>)
{
chomp $line;
if ($line =~ m/aaa([w]+)aaa/g)
{
$line =~ s|($1)|[$1]|g;
etc ...
}
}
close FILE;
Voici mes questions :
- le motif que je recherche peut apparaître plusieurs fois sur une
même ligne : comment "mémoriser" (dans les $1, et suivants) toutes
les occurrences ? car j'en ai besoin pour la suite.
- comment faire pour que toutes ces occurrences subissent la même
transformation (avec le s//) ?
En espérant avoir été suffisament clair.
Merci de votre aide,
P. Bert
Bonjour,
Je ne comprend pas bien ce que tu veux dire par mémoriser toutes les
occurrences, si c'est simplement les compter, tu peux faire :
while ($ligne =~ s/aaa([w]+)aaa/[$1]/) {
$cpt++;
}
Non, pas les compter. Je souhaite ensuite faire 2 choses :
- les stocker dans un tableau
- modifier $line pour ajouter des balises autour de ces motifs.
Typiquement, ce sera du html, et je veux donc mettre des <b></b>
autour.
d'autre part, je pressent une erreur dans l'expression, [w] signifie :
le caractère ou le caractère w, est-ce bien ce que tu cherches ?
Euh effectivment pas. Je croyais que w correspondait aux caractères
alphanumériques et au _, je me trompe ?
Je parse un fichier, et j'aimerais faire qq opérations sur les lignes. En particulier, je recherche certains motifs
open(FILE, "< $file") or die "Cannot open $file: $!"; while (my $line = <FILE>) { chomp $line;
if ($line =~ m/aaa([w]+)aaa/g) { $line =~ s|($1)|[$1]|g; etc ... } } close FILE;
Voici mes questions :
- le motif que je recherche peut apparaître plusieurs fois sur une même ligne : comment "mémoriser" (dans les $1, et suivants) toutes les occurrences ? car j'en ai besoin pour la suite.
- comment faire pour que toutes ces occurrences subissent la même transformation (avec le s//) ?
En espérant avoir été suffisament clair. Merci de votre aide,
P. Bert
Bonjour,
Je ne comprend pas bien ce que tu veux dire par mémoriser toutes les occurrences, si c'est simplement les compter, tu peux faire :
while ($ligne =~ s/aaa([w]+)aaa/[$1]/) { $cpt++; }
Non, pas les compter. Je souhaite ensuite faire 2 choses : - les stocker dans un tableau - modifier $line pour ajouter des balises autour de ces motifs. Typiquement, ce sera du html, et je veux donc mettre des <b></b> autour.
d'autre part, je pressent une erreur dans l'expression, [w] signifie : le caractère ou le caractère w, est-ce bien ce que tu cherches ?
Euh effectivment pas. Je croyais que w correspondait aux caractères alphanumériques et au _, je me trompe ?
Merci.
Paul
Rue des Prairies
Paul Bert wrote:
In article <bonhud$crn$, Rue des Prairies wrote:
Paul Bert wrote:
Bonsoir,
Je parse un fichier, et j'aimerais faire qq opérations sur les lignes. En particulier, je recherche certains motifs
open(FILE, "< $file") or die "Cannot open $file: $!"; while (my $line = <FILE>) { chomp $line;
if ($line =~ m/aaa([w]+)aaa/g) { $line =~ s|($1)|[$1]|g; etc ... } } close FILE;
Voici mes questions :
- le motif que je recherche peut apparaître plusieurs fois sur une même ligne : comment "mémoriser" (dans les $1, et suivants) toutes les occurrences ? car j'en ai besoin pour la suite.
- comment faire pour que toutes ces occurrences subissent la même transformation (avec le s//) ?
En espérant avoir été suffisament clair. Merci de votre aide,
P. Bert
Bonjour, Je ne comprend pas bien ce que tu veux dire par mémoriser toutes les occurrences, si c'est simplement les compter, tu peux faire :
while ($ligne =~ s/aaa([w]+)aaa/[$1]/) { $cpt++; }
Non, pas les compter. Je souhaite ensuite faire 2 choses : - les stocker dans un tableau - modifier $line pour ajouter des balises autour de ces motifs. Typiquement, ce sera du html, et je veux donc mettre des <b></b> autour.
d'autre part, je pressent une erreur dans l'expression, [w] signifie : le caractère ou le caractère w, est-ce bien ce que tu cherches ?
Euh effectivment pas. Je croyais que w correspondait aux caractères alphanumériques et au _, je me trompe ?
Merci.
Paul
while ($ligne =~ s|aaa(w+)aaa|<b>$1</b>|) { push @tab, $1; } Tu retrouves dans le tableau @tab la liste des chaînes substituées.
w, sans les crochets, représente n'importe quel caractère alphanum mais, si tu l'entoure de crochets , cela signifie que tu veux l'un ou l'autre des caractères contenu dans les crochets.
Olivier.
Paul Bert wrote:
In article <bonhud$crn$1@news-reader1.wanadoo.fr>, Rue des Prairies wrote:
Paul Bert wrote:
Bonsoir,
Je parse un fichier, et j'aimerais faire qq opérations sur les lignes.
En particulier, je recherche certains motifs
open(FILE, "< $file") or die "Cannot open $file: $!";
while (my $line = <FILE>)
{
chomp $line;
if ($line =~ m/aaa([w]+)aaa/g)
{
$line =~ s|($1)|[$1]|g;
etc ...
}
}
close FILE;
Voici mes questions :
- le motif que je recherche peut apparaître plusieurs fois sur une
même ligne : comment "mémoriser" (dans les $1, et suivants) toutes
les occurrences ? car j'en ai besoin pour la suite.
- comment faire pour que toutes ces occurrences subissent la même
transformation (avec le s//) ?
En espérant avoir été suffisament clair.
Merci de votre aide,
P. Bert
Bonjour,
Je ne comprend pas bien ce que tu veux dire par mémoriser toutes les
occurrences, si c'est simplement les compter, tu peux faire :
while ($ligne =~ s/aaa([w]+)aaa/[$1]/) {
$cpt++;
}
Non, pas les compter. Je souhaite ensuite faire 2 choses :
- les stocker dans un tableau
- modifier $line pour ajouter des balises autour de ces motifs.
Typiquement, ce sera du html, et je veux donc mettre des <b></b>
autour.
d'autre part, je pressent une erreur dans l'expression, [w] signifie :
le caractère ou le caractère w, est-ce bien ce que tu cherches ?
Euh effectivment pas. Je croyais que w correspondait aux caractères
alphanumériques et au _, je me trompe ?
Merci.
Paul
while ($ligne =~ s|aaa(w+)aaa|<b>$1</b>|) {
push @tab, $1;
}
Tu retrouves dans le tableau @tab la liste des chaînes substituées.
w, sans les crochets, représente n'importe quel caractère alphanum
mais, si tu l'entoure de crochets , cela signifie que tu veux l'un ou
l'autre des caractères contenu dans les crochets.
Je parse un fichier, et j'aimerais faire qq opérations sur les lignes. En particulier, je recherche certains motifs
open(FILE, "< $file") or die "Cannot open $file: $!"; while (my $line = <FILE>) { chomp $line;
if ($line =~ m/aaa([w]+)aaa/g) { $line =~ s|($1)|[$1]|g; etc ... } } close FILE;
Voici mes questions :
- le motif que je recherche peut apparaître plusieurs fois sur une même ligne : comment "mémoriser" (dans les $1, et suivants) toutes les occurrences ? car j'en ai besoin pour la suite.
- comment faire pour que toutes ces occurrences subissent la même transformation (avec le s//) ?
En espérant avoir été suffisament clair. Merci de votre aide,
P. Bert
Bonjour, Je ne comprend pas bien ce que tu veux dire par mémoriser toutes les occurrences, si c'est simplement les compter, tu peux faire :
while ($ligne =~ s/aaa([w]+)aaa/[$1]/) { $cpt++; }
Non, pas les compter. Je souhaite ensuite faire 2 choses : - les stocker dans un tableau - modifier $line pour ajouter des balises autour de ces motifs. Typiquement, ce sera du html, et je veux donc mettre des <b></b> autour.
d'autre part, je pressent une erreur dans l'expression, [w] signifie : le caractère ou le caractère w, est-ce bien ce que tu cherches ?
Euh effectivment pas. Je croyais que w correspondait aux caractères alphanumériques et au _, je me trompe ?
Merci.
Paul
while ($ligne =~ s|aaa(w+)aaa|<b>$1</b>|) { push @tab, $1; } Tu retrouves dans le tableau @tab la liste des chaînes substituées.
w, sans les crochets, représente n'importe quel caractère alphanum mais, si tu l'entoure de crochets , cela signifie que tu veux l'un ou l'autre des caractères contenu dans les crochets.