下面是有效的片段,
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
我没有得到任何输出。谁能说,为什么它不起作用?
谢谢
美联社
问题
- 在您的测试用例中,由于 Perl 数组是零索引的,因此未定义
$ARGV[1]
- 您需要
open
文件句柄才能$filename
- 您需要在文件句柄上执行
readline
,例如while ( <$fh> ) { ... }
也就是说,只需使用钻石运算符<>
或<ARGV>
:
while (<>) {
...
}
它应该是$ARGV[0]
,而不是[1]
。 根据Perl Maven,@ARGV
不包括程序名称 - 这是单独的变量$0
。