0

给定以下 Perl 脚本:

# USAGE: ./flurp -x -vf file1 file2 file3 file4

# e.
$a = shift;
$b = shift;
$c = shift;
@d = <>;

# ei.  value of $b = -vf
# eii. value of @d = content of file2, file3, file4

print "$b\n";
print "@d\n";
print "$ARGV\n";

这是输出:

-vf
{contents of file2, file3, file4}
file4

我对 的输出感到困惑print "$ARGV\n"。如果我尝试这样做print "$ARGV[-1]\n",则会将空行打印到 STDOUT。如果我直接引用$ARG[2],我也会得到一个空行。

为什么使用file4时要打印脚本$ARGV

作为一个反例,我尝试print "$d\n"了 ,期望得到file4. 我得到了一个空行,而不是预期的输出。如何$ARGV工作?

4

1 回答 1

4

回答您的具体问题:“$ARGV 是如何工作的?”

$ARGV 从 <> 读取时包含当前文件的名称。

来自Perl 文档中与文件句柄相关的变量。

尽管在您打印$ARGV时您已经完成了从 file4 的读取,但该变量仍然包含文件的名称。

于 2017-05-02T22:05:43.790 回答