我正在尝试将标量与数组名称连接,但不确定如何操作。 假设我们有两个for循环(一个嵌套在其他循环中),如
for ($i = 0; $i <= 5; $i++) {
for ($k = 0; $k <=5; $k++) {
$array[$k] = $k;
}
}
我想要创建5个名称为@array1
,@array2
,@array3
等的数组。每个数组末尾的数字表示在创建数组时$i
的值进展。
有办法吗?
由于
答案 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