Perl 将数组的名称与现有值连接起来

Perl concatenate name of an array with an existing value

问题是这样的: 我有一个循环。当我迭代这个循环时,我想创建一些具有以下名称的数组:array1 array2 array3...

我想知道是否有办法在 perl 中连接这些名称 我尝试过类似的操作,但出现错误

$i = 0;
while ($i <= 5) {
    @array . $i = ();
    $i++;
}

您想使用散列,

use strict;
use warnings;

my %hash;
for my $i (1 .. 5) {

  $hash{ "array$i" } = [];
}

长话短说:Why it's stupid to use a variable as a variable name

是的,你可以这样做,但是不,你不应该这样做。

您应该做的是使用对 匿名数组:

的引用数组
@arrayrefs = ();
$i = 0;
while ($i <= 5) {
    $arrayrefs[$i] = [];
    $i++;
}

或者,更简洁地说:

@arrayrefs = ([], [], [], [], [], []);

但为了完整起见。 . .你可以做到这一点,使用"symbolic references":

$i = 0;
while ($i <= 5) {
    my $name = "array$i";
    @$name = ();
    $i++;
}

(当然,无论如何,数组默认为空数组,所以这并不是真正需要的......)。


顺便说一句,请注意,对于这种简单的情况,实际上习惯使用 for 循环 而不是 while 循环。要么:

for ($i = 0; $i <= 5; $i++) {
    ...
}

或者这个:

for $i (0 .. 5) {
    ...
}