[英]Perl ARGV value in scalar context
给定以下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\\n"
感到困惑。 如果我尝试print "$ARGV[-1]\\n"
,则会在STDOUT上打印一条空行。 如果我直接引用$ARG[2]
,我也会得到一个空行。
为什么使用$ARGV
时脚本打印file4
?
作为反例,我尝试print "$d\\n"
,期望得到file4
的最后一行。 我没有得到预期的输出,而是空行。 $ARGV
如何工作?
在回答您的特定问题时: “ $ ARGV如何工作?”
$ ARGV包含从<>读取时当前文件的名称。
来自Perl文档中与文件句柄相关的变量 。
尽管在打印$ARGV
时已经完成了从file4读取的操作,但是变量仍然保留文件名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.