Perl:快速制作列表引用列表

时间:2016-01-04 22:41:54

标签: perl reference

我发现自己做了很多这样的构建:

my @listOfLists = ();
foreach (1..$count) {
  my @temporaryList = ();
  push @listOfLists, \@temporaryList;
}

有没有更少的打字,单行方式来做到这一点?请注意,这不起作用:

my @listOfLists = ([]) x $count;

它不起作用,因为各个项都指向对同一个空列表的引用。

1 个答案:

答案 0 :(得分:6)

您可以在循环中使用匿名数组[...]

my @listOfLists;
for (1 .. $count) {
    push @listOfLists, [];
}

for循环可伪装成地图:

my @listOfLists = map [], 1 .. $count;

这可能就是你想用x做的。

另一件事是你经常不需要它。 Perl会在需要时为您自动生成数组:

my @lol;
$lol[2][4] = [ 'a' .. 'z' ];
print $lol[2][4][3];  # d