Perl中的数组索引

时间:2014-07-31 04:12:43

标签: arrays perl

my @someStuff = qw/Hello and 
              welcome/;     
$#someStuff = 0;                

$someStuff[1] = "Joe";

$someStuff[2] = "Rat";

$someStuff[3] = "roll";

$someStuff[5] = "Jimmy";

print $someStuff[5];

我不明白将$someStuff分配给不存在的索引时会发生什么

OUTPUT _

Jimmy

即使没有分配给任何东西,[4]会发生什么?

阵列现在看起来像qw(Hello Joe Rat roll?Jimmy)#?作为[4]的占位符 它有不合适吗?

E:我的代码搞砸了,不知道如何解决,对不起!

1 个答案:

答案 0 :(得分:3)

是的,扩展后,数组会自动用undef填充空索引。

另一个例子如下:

use strict;
use warnings;

my @array;
$array[10] = 'last';

use Data::Dump;
dd @array;

输出:

(
  undef,
  undef,
  undef,
  undef,
  undef,
  undef,
  undef,
  undef,
  undef,
  undef,
  "last",
)

如果要避免这种类型的行为,只需使用push之类的数组操作添加到数组的末尾,而不必显式指定索引:

push @someStuff, qw(Joe Rat roll Jimmy);