web-dev-qa-db-fra.com

Comment obtenir le numéro de ligne actuel d'un fichier ouvert avec Perl?

open my $fp, '<', $file or die $!;

while (<$fp>) {
    my $line = $_;
    if ($line =~ /$regex/) {
        # How do I find out which line number this match happened at?
    }
}

close $fp;
25
Lazer

Utilisez $. (voir perldoc perlvar ).

43
ninjalj

Vous pouvez également le faire via l'interface OO: 

use IO::Handle;
# later on ...
my $n = $fp->input_line_number();

C'est dans perldoc perlvar aussi. 

13
Dallaylaen

N'utilisez pas$., ni $_ ni aucune variable globale. Utilisez ceci à la place:

while(my $line = <FILE>) {
  print $line unless ${\*FILE}->input_line_number == 1;
}

Pour éviter cela et bien d'autres pièges Perl, vous pouvez utiliser des packages Atom ou VSCode tels que linter-Perl . Arrêtez de faire de Perl un langage en écriture seule !

0
Pablo Bianchi