在Perl中处理二维数组让我很头疼.无论如何,以下是我的问题:
我有一个循环将一个数组(比如@twoOneArray)推入另一个数组,比如说@twoDimArray,然后在循环的下一次迭代开始之前重置,然后再次用新的值集推入@twoDimArray.当我使用以下任一方式打印此@twoDimArray时:
print Dumper \@twoDimArray;
Run Code Online (Sandbox Code Playgroud)
它给出了输出
OUTPUT
$VAR1 = [
[
'BB',
'AA',
'AA'
],
$VAR1->[0],
$VAR1->[0],
$VAR1->[0]
];
Run Code Online (Sandbox Code Playgroud)
或使用循环
for (my $i=0; $i<4; $i++){
for (my $j=0; $j<4; $j++){
print "$twoDimArray[$i][$j] \n";
}
}
Run Code Online (Sandbox Code Playgroud)
数据重复.
OUTPUT
行= 0 BB AA AA
行= 1 BB AA AA
行= 2 BB AA AA
行= 3 BB AA AA
等等....
我无法弄清楚为什么两种输出方式都出错了.如果我每次都打印@twoDimArray(在移动到循环的下一次迭代之前,即在使用push函数之后)插入@twoOneArray,那么值似乎很好并且不重复自己,但是在单个go中打印它似乎给出了上述错误.这里也有类似的问题,但我不确定这对我是否有意义.有什么建议?
构建2D数组的代码:
for ($k = 1; $k <= $counter; $k++){
@twoOneArray = (); #reset it when loop starts …Run Code Online (Sandbox Code Playgroud)