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


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)。

您也可以通过 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或Visual Studio Code包,如linter-perl。由于这些问题,有些人认为Perl是一种只写语言。

相关内容

  • 没有找到相关文章

最新更新