Perl 中的 ARGV 不起作用



下面是有效的片段,

open(C, "Inputfile.txt")  || die "Cannot open the filen";
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

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

谢谢

美联社

问题

  1. 在您的测试用例中,由于 Perl 数组是零索引的,因此未定义$ARGV[1]
  2. 您需要open文件句柄才能$filename
  3. 您需要在文件句柄上执行readline,例如 while ( <$fh> ) { ... }

也就是说,只需使用钻石运算符<><ARGV>

while (<>) {
    ...
}

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

最新更新