如何使用Perl打开文件的当前行号?

时间:2011-05-07 11:18:00

标签: perl file

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 个答案:

答案 0 :(得分:43)

使用$.(请参阅perldoc perlvar)。

答案 1 :(得分:13)

您也可以通过OO界面:

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

这也在perldoc perlvar

答案 2 :(得分:0)

Don't use $.,也不$_或任何全局变量。改用它:

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

要避免这种情况以及其他许多Perl陷阱,可以在Atom或VSCode软件包(如linter-perl)上使用。停止制作Perl a write-only language