下面的代码是显示在命令行中输入的参数数量.
#!/usr/bin/perl –w
$myVar = $#ARGV + 1;
print "Hi " , $ARGV[0] , "\n";
print "You have $myVar arguments\n";
Run Code Online (Sandbox Code Playgroud)
从perlintro,$#ARGV是一个特殊的变量,它告诉你数组的最后一个元素的索引.
如果是这种情况,当我在命令行中没有输入任何值时,$myVar值如何以0结束?
是因为当数组中没有元素时,"无元素"的索引是-1吗?为-1 + 1 = 0.
$#ARGV 意思是"ARGV的最后一个元素的索引" - 不仅仅是perlintro句子似乎暗示的任何数组.
对于任何数组,如果它为空,则为$#array-1,scalar @array将为0.
CAVEAT:如果有人修改了$[("第一个元素的索引"),那也会改变$#.你应该很可能一直使用scalar @array,如果你是长后,并$array[-1]获得最后一个元素.
> cat demo.pl
my @array = ();
print "Size=", scalar @array, " items, last=", $#array, "\n";
$[ = 2;
print "Size=", scalar @array, " items, last=", $#array, "\n";
> perl demo.pl
Size=0 items, last=-1
Size=0 items, last=1
Run Code Online (Sandbox Code Playgroud)