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=]
。
问题
- 在您的测试用例中
$ARGV[1]
未定义,因为 Perl 数组是 zero-indexed
- 您需要
open
一个文件句柄到$filename
- 您需要对文件句柄执行
readline
,例如while ( <$fh> ) { ... }
也就是说,只需使用菱形运算符 <>
或 <ARGV>
:
while (<>) {
...
}
下面是有效的代码片段,
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=]
。
问题
- 在您的测试用例中
$ARGV[1]
未定义,因为 Perl 数组是 zero-indexed - 您需要
open
一个文件句柄到$filename
- 您需要对文件句柄执行
readline
,例如while ( <$fh> ) { ... }
也就是说,只需使用菱形运算符 <>
或 <ARGV>
:
while (<>) {
...
}