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" } = [];
}
是的,你可以这样做,但是不,你不应该这样做。
您应该做的是使用对 匿名数组:
的引用数组
@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) {
...
}
问题是这样的:
我有一个循环。当我迭代这个循环时,我想创建一些具有以下名称的数组: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" } = [];
}
是的,你可以这样做,但是不,你不应该这样做。
您应该做的是使用对 匿名数组:
的引用数组@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) {
...
}