为什么这会返回一个空列表,尽管给出$sub=1000
。 ARGV中“$#”的目的是什么?
use strict;
my $sub = 0;
while($sub <= $#ARGV) {
print "$ARGV[$sub]\n";
++$sub;
}
print "[@ARGV]\n";
答案 0 :(得分:5)
$#array
表示法为您提供@array
中最后一个元素的索引。
@ARGV
包含程序的命令行参数。如果在运行程序时没有提供任何参数,则该列表将为空。
所以它进入while
,其中$sub
是0
,大于-1
。所以它永远不会进入循环。
因此,该程序只应输出一行空[]
。
$ perl foo.pl
[]
$
有关@ARGV
的{{1}}和$#array
long long Acc;
long a;
long b;
Acc += ((long long)a*b);
的更多详情,请参见perlvar。