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;
Utilisez $.
(voir perldoc perlvar
).
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.
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 !