HANDLE->input_line_number( EXPR )

Current line number for the last filehandle accessed.


Each filehandle in Perl counts the number of lines that have been read from it. (Depending on the value of $/, Perl's idea of what constitutes a line may not match yours.) When a line is read from a filehandle (via readline() or <>), or when tell() or seek() is called on it, $. becomes an alias to the line counter for that filehandle.

Perl の各ファイルハンドルは、そこから読み込んだ行数を数えています。 ($/ の値に依存して、何が行を構成するかに関する Perl の考えはあなたの 考えと一致しないかもしれません。) 行が(readline()<> を使って)ファイルハンドルから読み込まれたか、 tell()seek() がファイルハンドルに対して呼び出された場合、 $. はそのファイルハンドルの行カウンタへのエイリアスとなります。

You can adjust the counter by assigning to $., but this will not actually move the seek pointer. Localizing $. will not localize the filehandle's line count. Instead, it will localize perl's notion of which filehandle $. is currently aliased to.

$. へ代入することでカウンタの値を修正できますが、これは実際にシーク ポインタを動かすことはありません。 $. をローカル化してもファイルハンドルの行カウンタはローカル化されません。 代わりに、現在 $. がどのファイルハンドルへのエイリアスかという情報が ローカル化されます。

$. is reset when the filehandle is closed, but not when an open filehandle is reopened without an intervening close(). For more details, see "I/O Operators" in perlop. Because <> never does an explicit close, line numbers increase across ARGV files (but see examples in "eof" in perlfunc).

$. はファイルハンドルがクローズされるとリセットされますが、 オープンしているファイルハンドルが close() されることなく再オープンされた 場合にはリセット されません。 さらなる詳細については、"I/O Operators" in perlop を参照してください。 なぜなら、 <> は決して明示的なクローズは行わず、行番号は ARGV の ファイル間で通算してカウントされるからです(但し "eof" in perlfunc の例を 参照してください)。

You can also use HANDLE->input_line_number(EXPR) to access the line counter for a given filehandle without having to worry about which handle you last accessed.

また、HANDLE->input_line_number(EXPR) とすることで、どのハンドルに 最後にアクセスしたかを気にすることなく行カウンタにアクセスできます。

Mnemonic: many programs use "." to mean the current line number.

記憶法: 多くのプログラムで "." が現在行番号を示すように使われています。