当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《为什么这会返回一个空数组?》经验,为你挑选了1个好方法。

为什么这会在给出的情况下返回一个空列表$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,那里$sub0,是大于-1.所以它永远不会进入循环.

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

$ perl foo.pl
[]
$

参见perlvar关于更多的细节@ARGV和perldata的$#array.



1> simbabque..:

$#array符号让你在最后一个元素的索引@array.

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

所以,它进入while,那里$sub0,是大于-1.所以它永远不会进入循环.

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

$ perl foo.pl
[]
$

参见perlvar关于更多的细节@ARGV和perldata的$#array.


注意:即使没有定义`@ ARGV`,'$#ARGV`也不是'undef`,它是-1
推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有