繁体   English   中英

标量上下文中的Perl ARGV值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM