web-dev-qa-db-ja.com

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;
27
Lazer

使用する $. (見る - perldoc perlvar )。

43
ninjalj

OOインターフェースを介してそれを行うこともできます:

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

これは perldoc perlvar にもあります。

13
Dallaylaen

使用しない$.、または$_または任意のグローバル変数。代わりにこれを使用してください:

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

これおよび他の多くのPerlの落とし穴を回避するには、Atomまたは linter-Perl のようなVSCodeパッケージで使用できます。Perlの作成をやめる 書き込み専用言語

0
Pablo A