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