[Perl] Numérotation

Résolu
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 ?

--
 
Configuration: Mac OS X
Safari 419.3

5 réponses

  1. Modérateur
    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
    1. Modérateur
      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
      1. Contributeur
        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
        1. Modérateur
          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
          1. Contributeur
            Vu.
            Merci.
            0