Как получить номер текущей строки файла, открытого с помощью Perl? - PullRequest
25 голосов
/ 07 мая 2011
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;

Ответы [ 3 ]

43 голосов
/ 07 мая 2011

Используйте $. (см. perldoc perlvar).

13 голосов
/ 07 мая 2011

Вы также можете сделать это через интерфейс OO:

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

Это также в perldoc perlvar .

0 голосов
/ 06 февраля 2019

Не используйте $. или $_ или какую-либо глобальную переменную.Используйте это вместо:

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

Чтобы избежать этого и многих других ошибок Perl, вы можете использовать в пакетах Atom или VSCode, таких как linter-perl .Прекратите делать Perl языком только для записи !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...