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了。
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!