在Perl处理二维数组是让我头疼。 不管怎样,下面是我的问题:
我有一个循环其推动阵列,说@twoOneArray,到另一个数组,说@twoDimArray,然后被复位循环的下一次迭代开始之前,然后再次推入@twoDimArray与新的一组值。 当我打印使用可以在本@twoDimArray:
print Dumper \@twoDimArray;
它给输出
OUTPUT
$VAR1 = [
[
'BB',
'AA',
'AA'
],
$VAR1->[0],
$VAR1->[0],
$VAR1->[0]
];
或者使用循环
for (my $i=0; $i<4; $i++){
for (my $j=0; $j<4; $j++){
print "$twoDimArray[$i][$j] \n";
}
}
得到的数据复制。
OUTPUT
行= 0 BB AA AA
行= 1 BB AA AA
行= 2 BB AA AA
行= 3 BB AA AA
等等....
我无法弄清楚,为什么这两个输出的方式会是错误的。 如果我打印@twoDimArray每次@twoOneArray插入(移动到循环的下一次迭代,用推送功能后,即之前),那么价值观似乎要被罚款,而不是重复自己,但它打印在一个单一的去似乎给上述错误。 类似的问题已被要求在这里 ,但我不知道这是否对我来说很有意义。 有什么建议么?
代码来构建2D阵列:
for ($k = 1; $k <= $counter; $k++){
@twoOneArray = (); #reset it when loop starts again
for ($j = 0; $j <= $colsInArray; $j++){
#do stuff to create @twoOneDim
}
push @twoDimArray, \@twoOneArray;
#if I print @twoDimArray if prints fine, with the exact values intact
}
print Dumper \@twoDimArray; #if I print it here it messes up
print "\n";