使用数组名称连接标量

时间:2014-01-15 04:15:10

标签: perl

我正在尝试将标量与数组名称连接,但不确定如何操作。 假设我们有两个for循环(一个嵌套在其他循环中),如

for ($i = 0; $i <= 5; $i++) {
    for ($k = 0; $k <=5; $k++) {
       $array[$k] = $k;
    }
}

我想要创建5个名称为@array1@array2@array3等的数组。每个数组末尾的数字表示在创建数组时$i的值进展。 有办法吗?

由于

2 个答案:

答案 0 :(得分:1)

如果你的意思是创建实际的变量,一方面,这是一个坏主意,另一方面,没有意义。您只需访问变量而无需创建或声明它。这是一个糟糕的主意,因为它是哈希所做的,确切地说,没有任何缺点。

my %hash;
$hash{array1} = [ 1, 2, 3 ];

在那里,你已经创建了一个数组。要访问它,请执行以下操作:

print @{ $hash{array1} };

可以动态创建哈希键(名称),就像您想要的那样,因此可以轻松创建5个不同的名称并为其分配值。

for my $i (0 .. 5) {
    push @{ $hash{"array$i"} }, "foo";
}

答案 1 :(得分:1)

当字符用作变量或数组/哈希名称时,需要将{}和“”添加到字符中。

试试这个:

for ($i = 0; $i <= 5; $i++){
    for ($k = 0; $k <=5; $k++){
        ${"array$k"}[$k] = $k;
    } 
}
print "array5[4] = $array5[4]
array5[5] = $array5[5]\n";

array5 [4] =

array5 [5] = 5