为什么这会返回一个空数组?

时间:2015-12-03 10:38:35

标签: perl

为什么这会返回一个空列表,尽管给出$sub=1000。 ARGV中“$#”的目的是什么?

use strict;
my $sub = 0;
while($sub <= $#ARGV) {
print "$ARGV[$sub]\n";
++$sub;
}
print "[@ARGV]\n";

1 个答案:

答案 0 :(得分:5)

$#array表示法为您提供@array中最后一个元素的索引。

@ARGV包含程序的命令行参数。如果在运行程序时没有提供任何参数,则该列表将为空。

所以它进入while,其中$sub0,大于-1。所以它永远不会进入循环。

因此,该程序只应输出一行空[]

$ perl foo.pl
[]
$

有关@ARGV的{​​{1}}和$#array long long Acc; long a; long b; Acc += ((long long)a*b); 的更多详情,请参见perlvar