如何获取Perl中正在读取的文件的名称?

时间:2009-07-15 08:35:58

标签: perl

在以下Perl模式中:

while(<>) {
  # do stuff
}

有没有办法获取当前打开的文件的名称?

为了清楚起见,我希望收到很多args,这样循环就会处理多个文件。我想要处理目前文件的名称。

3 个答案:

答案 0 :(得分:16)

存储在

$ARGV

请参阅perldoc perlvar

  • $ ARGV

    从&lt;&gt;。

  • 读取时,

    包含当前文件的名称

但是如果从STDIN输入,你将只得到' - '

还有关于perldoc perlop

中空文件句柄的更多讨论

答案 1 :(得分:2)

如果您使用的是Linux,则可以查看/proc/self/fd/0指向的文件。

编辑:为了清晰起见,修改了答案:上述内容非常有用,但在从stdin读取perl脚本的输入的情况下。这可以通过阅读$ARGV来确定,如上面的回复中所述。

答案 2 :(得分:2)

$ ARGV包含&lt;&gt;。

中使用的文件的名称