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

问题描述 投票:25回答:3
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 file
3个回答
43
投票

使用$.(见perldoc perlvar)。


13
投票

你也可以做到这一点通过OO接口:

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

这是perldoc perlvar了。


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

© www.soinside.com 2019 - 2024. All rights reserved.