ARGV in perl无法正常工作

Aru*_*run 0 perl argv

以下是可行的代码段,

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

我希望在命令行中传递文件名.我试图使用ARGV,但它无法正常工作.我把它修改为:

use List::MoreUtils qw(uniq);
my $filename = $ARGV[1];
while($filename)
Run Code Online (Sandbox Code Playgroud)

当我执行它时

perl file.pl inputfile.txt
Run Code Online (Sandbox Code Playgroud)

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

谢谢,

美联社

Zai*_*aid 5

问题

  1. 在您的测试用例$ARGV[1]中没有定义,因为Perl数组是零索引的
  2. 你需要open一个文件句柄$filename
  3. 您需要对readline文件句柄进行操作,例如while ( <$fh> ) { ... }

也就是说,只需使用钻石操作员<><ARGV>:

while (<>) {
    ...
}
Run Code Online (Sandbox Code Playgroud)