[Perl] Numérotation

Résolu/Fermé
Gihef Messages postés 5150 Date d'inscription mercredi 20 juillet 2005 Statut Contributeur Dernière intervention 20 février 2023 - 17 août 2007 à 20:06
Gihef Messages postés 5150 Date d'inscription mercredi 20 juillet 2005 Statut Contributeur Dernière intervention 20 février 2023 - 18 août 2007 à 00:48
Bonjour,

Je commence à découvrir Perl et bute sur un problème.
Une chose toute simple, je recherche dans un document des occurences (lien http) et les stockes dans un document avec le n° de la ligne où elles ont été trouvées.
Mais j'aimerais aussi qu'avant d'insérer le n° de la ligne correspondante, insérer le nombre d'occurences trouvées.
  1 - ligne 5 - www…
  2 - ligne 22 - www…
  3 - ligne 48 - www…
  etc.
Comment faire ?

5 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
17 août 2007 à 21:45
Salut,

voici un p'tit exemple
lami20j@deb:~$ cat ccm.pl
#!/usr/bin/perl
use strict;use warnings;

my $l=0;
while(<DATA>){
  print "${\($l=$l+1)} - ligne $.\t- $1\n" if /(http.*)/;
}
__END__
aaaaaaa
http://www.bbbbbb.fr
aa
cccc
aa
http://www.ccc.fr
sdjf
sdj
jkjk
https://www.commentcamarche.net/
lami20j@deb:~$ perl ccm.pl
1 - ligne 2     - http://www.bbbbbb.fr
2 - ligne 6     - http://www.ccc.fr
3 - ligne 10    - https://www.commentcamarche.net/
lami20j@deb:~$
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
17 août 2007 à 21:55
ou encore
lami20j@deb:~$ cat ccm.pl
#!/usr/bin/perl
use strict;use warnings;

my $l=1;
while(<DATA>){
  print $l++," - ligne $.\t- $1\n" if /(http.*)/;
}
__END__
aaaaaaa
http://www.bbbbbb.fr
aa
cccc
aa
http://www.ccc.fr
sdjf
sdj
jkjk
https://www.commentcamarche.net/
0
Gihef Messages postés 5150 Date d'inscription mercredi 20 juillet 2005 Statut Contributeur Dernière intervention 20 février 2023 2 775
17 août 2007 à 21:55
Merci.
Il me suffit donc d'initialiser une variable ($1) et de l'incrémenter de 1 ($1+1) à chaque passage.
Merci.

[edit] $++ me parle plus…
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
17 août 2007 à 22:09
Oui, et le numéro de ligne comme tu l'as remarqué est donné par la variable spéciale $. ou $INPUT_LINE_NUMBER ou $NR si tu utilses use English
#!/usr/bin/perl
use strict;use warnings;
use English;

my $l=1;
while(<DATA>){
  print $l++," - ligne $INPUT_LINE_NUMBER\t- $1\n" if /(http.*)/;
}
__END__
aaaaaaa
http://www.bbbbbb.fr
aa
cccc
aa
http://www.ccc.fr
sdjf
sdj
jkjk
https://www.commentcamarche.net/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gihef Messages postés 5150 Date d'inscription mercredi 20 juillet 2005 Statut Contributeur Dernière intervention 20 février 2023 2 775
18 août 2007 à 00:48
Vu.
Merci.
0