perl 中的 ARGV 不工作

ARGV in perl not working

下面是有效的代码片段,

open(C, "Inputfile.txt")  || die "Cannot open the file\n";
use List::MoreUtils qw(uniq);
use Math::Round
while(<C>)

我希望在命令行中传递文件名。我尝试使用 ARGV,但它不起作用。我修改为:

use List::MoreUtils qw(uniq);
my $filename = $ARGV[1];
while($filename)

当我用

执行它时
perl file.pl inputfile.txt

我没有得到任何输出。谁能说,为什么它不起作用?

谢谢,

AP

应该是$ARGV[0],不是[1]。根据 Perl Maven@ARGV 不包括程序名称 — 这是单独的变量 [=13=]

问题

  1. 在您的测试用例中 $ARGV[1] 未定义,因为 Perl 数组是 zero-indexed
  2. 您需要open一个文件句柄到$filename
  3. 您需要对文件句柄执行 readline,例如while ( <$fh> ) { ... }

也就是说,只需使用菱形运算符 <><ARGV>:

while (<>) {
    ...
}