为什么这会在给出的情况下返回一个空列表$sub=1000
.ARGV中"$#"的目的是什么?
use strict; my $sub = 0; while($sub <= $#ARGV) { print "$ARGV[$sub]\n"; ++$sub; } print "[@ARGV]\n";
simbabque.. 5
该$#array
符号让你在最后一个元素的索引@array
.
@ARGV
包含程序的命令行参数.如果在运行程序时没有提供任何参数,则该列表将为空.
所以,它进入while
,那里$sub
是0
,是大于-1
.所以它永远不会进入循环.
因此,该程序应该只输出一行为空[]
.
$ perl foo.pl [] $
参见perlvar关于更多的细节@ARGV
和perldata的$#array
.
该$#array
符号让你在最后一个元素的索引@array
.
@ARGV
包含程序的命令行参数.如果在运行程序时没有提供任何参数,则该列表将为空.
所以,它进入while
,那里$sub
是0
,是大于-1
.所以它永远不会进入循环.
因此,该程序应该只输出一行为空[]
.
$ perl foo.pl [] $
参见perlvar关于更多的细节@ARGV
和perldata的$#array
.