问题是这样的:
我有一个循环。当我迭代这个循环时,我想创建一些具有以下名称的数组:array1
array2
array3
...
我想知道是否有办法在perl中连接这些名称 我试过这样的东西,但是我收到了错误
$i = 0;
while ($i <= 5) {
@array . $i = ();
$i++;
}
答案 0 :(得分:4)
是的,你可以这样做,但不,你不应该这样做。
你应该做的是使用匿名数组的引用数组:
@arrayrefs = ();
$i = 0;
while ($i <= 5) {
$arrayrefs[$i] = [];
$i++;
}
或更简洁:
@arrayrefs = ([], [], [], [], [], []);
但为了完整起见'。 。 。你可以通过使用“符号引用”来实现这一点:
$i = 0;
while ($i <= 5) {
my $name = "array$i";
@$name = ();
$i++;
}
(当然,数组默认为空数组,所以这不是真的需要......)。
顺便说一句,请注意,对于这种简单的情况,实际上习惯使用 for循环而不是while循环。要么:
for ($i = 0; $i <= 5; $i++) {
...
}
或者这个:
for $i (0 .. 5) {
...
}
答案 1 :(得分:1)
你想使用哈希,
use strict;
use warnings;
my %hash;
for my $i (1 .. 5) {
$hash{ "array$i" } = [];
}