gpt4 book ai didi

perl - 如何在 Perl 中为 <> 混合命令行参数和文件名?

转载 作者:行者123 更新时间:2023-12-04 13:09:00 25 4
gpt4 key购买 nike

考虑以下愚蠢的 Perl 程序:

$firstarg = $ARGV[0];

print $firstarg;

$input = <>;

print $input;

我从终端运行它,如:
perl myprog.pl sample_argument

并得到这个错误:
Can't open sample_argument: No such file or directory at myprog.pl line 5.

任何想法这是为什么?当它到达 <> 时,它是否试图从(不存在的)文件中读取“sample_argument”或其他内容?为什么?

最佳答案

<>是“从 @ARGV 中指定的文件中读取,或者如果 @ARGV 为空,则从 STDIN 中读取”的简写。在您的程序中,@ARGV包含值 ("sample_argument") ,因此当您使用 <> 时,Perl 会尝试从该文件中读取数据。运算符(operator)。

您可以通过清除 @ARGV 来修复它在您到达 <> 之前线:

$firstarg = shift @ARGV;
print $firstarg;
$input = <>; # now @ARGV is empty, so read from STDIN
print $input;

关于perl - 如何在 Perl 中为 <> 混合命令行参数和文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2344926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com