HANDLE->input_line_number( EXPR )
$INPUT_LINE_NUMBER
$NR
$.

访问的最后一个文件句柄的当前行号。

Perl 中的每个文件句柄都会计数从中读取的行数。(根据 $/ 的值,Perl 对行内容的理解可能与你的理解不符。)当从文件句柄中读取一行(通过 readline()<>),或在文件句柄上调用 tell()seek() 时,$. 会成为该文件句柄的行计数器的别名。

你可以通过赋值给 $. 来调整计数器,但这不会实际移动搜索指针。$. 进行局部化不会对文件句柄的行计数进行局部化。相反,它会对 Perl $. 当前别名指向的文件句柄进行局部化。

当文件句柄关闭时,$. 将重置,但当未进行 close() 干预的情况下重新打开一个打开的文件句柄时,不会重置。有关更多详细信息,请参阅 perlop 中的 “I/O 运算符”。由于 <> 从不执行显式关闭,行号会跨 ARGV 文件增加(但请参阅 perlfunc 中 “eof” 中的示例)。

您还可以使用 HANDLE->input_line_number(EXPR) 访问给定文件句柄的行计数器,而无需担心上次访问哪个句柄。

助记符:许多程序使用 “.” 来表示当前行号。