ARGV in perl无法正常工作

时间:2017-01-29 14:29:18

标签: perl argv

以下是可行的代码段

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

2 个答案:

答案 0 :(得分:5)

问题

  1. 在您的测试用例中,由于Perl数组为零索引,因此未定义$ARGV[1]
  2. 您需要open $filename
  3. 的文件句柄
  4. 您需要在文件句柄上执行readline,例如while ( <$fh> ) { ... }
  5. 也就是说,只需使用钻石运算符<><ARGV>

    while (<>) {
        ...
    }
    

答案 1 :(得分:1)

应该是$ARGV[0],而不是[1]。根据{{​​3}},@ARGV不包含程序名称 - 这是单独的变量$0