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;
Используйте $. (см. perldoc perlvar).
$.
perldoc perlvar
Вы также можете сделать это через интерфейс OO:
use IO::Handle; # later on ... my $n = $fp->input_line_number();
Это также в perldoc perlvar .
Не используйте $. или $_ или какую-либо глобальную переменную.Используйте это вместо:
$_
while(my $line = <FILE>) { print $line unless ${\*FILE}->input_line_number == 1; }
Чтобы избежать этого и многих других ошибок Perl, вы можете использовать в пакетах Atom или VSCode, таких как linter-perl .Прекратите делать Perl языком только для записи !