没有元素时$#ArrayName的默认值(Perl)
下面的代码显示在命令行中输入的参数数量没有元素时$#ArrayName的默认值(Perl),perl,Perl,下面的代码显示在命令行中输入的参数数量 #!/usr/bin/perl –w $myVar = $#ARGV + 1; print "Hi " , $ARGV[0] , "\n"; print "You have $myVar arguments\n"; 在perlintro中,$#ARGV是一个特殊变量,它告诉您数组最后一个元素的索引 如果是这种情况,当我没有在命令行中输入任何值时,$myVar值如何以0结束 是因为当数组中没有元素时,“no element”的索引是-1吗?As-1+1=0
#!/usr/bin/perl –w
$myVar = $#ARGV + 1;
print "Hi " , $ARGV[0] , "\n";
print "You have $myVar arguments\n";
在perlintro中,$#ARGV
是一个特殊变量,它告诉您数组最后一个元素的索引
如果是这种情况,当我没有在命令行中输入任何值时,$myVar
值如何以0结束
是因为当数组中没有元素时,“no element”的索引是-1吗?As-1+1=0。根据页面:
@ARGV数组@ARGV包含用于
剧本$#ARGV通常是参数数减去1,
因为$ARGV[0]是第一个参数,而不是程序的命令名
它本身有关命令名,请参见$0
根据该页面:
@ARGV数组@ARGV包含用于
剧本$#ARGV通常是参数数减去1,
因为$ARGV[0]是第一个参数,而不是程序的命令名
它本身有关命令名,请参见$0
$#ARGV
的意思是“ARGV的最后一个元素的索引”——而不仅仅是perlintro语句所暗示的任何数组
对于任何数组,如果为空,$#array
将为-1,scalar@array
将为0
警告:如果有人修改了$[
(“第一个元素的索引”),这也会改变$#
。如果您在长度之后,可能应该始终使用标量@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
$#ARGV
的意思是“ARGV的最后一个元素的索引”——而不仅仅是perlintro语句所暗示的任何数组
对于任何数组,如果为空,$#array
将为-1,scalar@array
将为0
警告:如果有人修改了$[
(“第一个元素的索引”),这也会改变$#
。如果您在长度之后,可能应该始终使用标量@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
你说得对
正如斯奎盖指出的那样,$#ARGV
是标量@ARGV-1
<> p>但是,要计算传递给程序的参数的数量要少得多,您应该考虑使用:
my $count = scalar @ARGV; # Explicit using of 'scalar' function
my $count = 0+@ARGV; # Implicitly enforce scalar context
my $count = @ARGV; # Since the context is already set by LHS
你说得对
正如斯奎盖指出的那样,$#ARGV
是标量@ARGV-1
<> p>但是,要计算传递给程序的参数的数量要少得多,您应该考虑使用:
my $count = scalar @ARGV; # Explicit using of 'scalar' function
my $count = 0+@ARGV; # Implicitly enforce scalar context
my $count = @ARGV; # Since the context is already set by LHS
是否因为数组中没有元素时,“no element”的索引为-1?为-1+1=0
差不多。这不是“无元素索引”,而是适用以下规则:
以下情况始终正确:
标量(@whater)=$#whater+1
是否因为数组中没有元素时,“no element”的索引为-1?为-1+1=0
差不多。这不是“无元素索引”,而是适用以下规则:
以下情况始终正确:
标量(@whater)=$#whater+1
如果某个(邪恶的)人改变了
$[
,那就不是真的。如果某个(邪恶的)人改变了$[
$#ARGV
不会永远是标量@ARGV-1
。$#
是个不可靠的情妇,应该被当作一把锋利的斧头来对待。@rjp:你说得对,$#ARGV=@ARGV-1+$
。唯一阻止我提到它的是$[
在5.12中被弃用。目前,我敢说99.9%的时间$[==0
,如果不是更多的话,$#ARGV也不会总是标量@ARGV-1
。$#
是一个不可靠的情妇,应该被当作一把锋利的斧头来对待。@rjp:你说得对,$#ARGV=@ARGV-1+$
。唯一阻止我提及的是$[
在5.12中被弃用。目前,我敢说99.9%的时间$[==0
,如果不是更多的话