【发布时间】:2011-05-13 18:24:19
【问题描述】:
我真的很想自己解决这个问题,但是我的脸现在因为不断地撞到这堵砖墙而受伤。
我正在尝试加载 9 个文本文件,每个文件由 7 行 7 个字符的矩阵组成,由空格分隔,然后将每个引用的矩阵保存到数组中的一个元素中。我正在阅读每个文件都很好,但是当我访问我的数组时,所有元素都是相同的。我一直在寻找解决方案,但我的问题在任何地方都没有得到解答,或者(更有可能)我不理解答案。这是我的代码的问题部分:
my @boardarray = (1, 2, 3, 4, 5, 6, 7, 8, 9);
sub LoadBoards {
my (@board, $infile, @allboards);
my $i = 1;
@allboards = @boardarray;
foreach (@allboards) {
my $infile = "board" . $i . "\.brd";
open FILE, "< $infile" or die $!;
my $line = 0;
while (<FILE>) {
chomp $_;
my @chars = split (/ /,$_);
$board[$line] = [@chars];
$line++;
}
my $tempboard = \@board;
DisplayOneBoard($tempboard); print ("\n"); #Test A
$boardarray[$i-1] = \@board; #Problem line?
DisplayOneBoard($boardarray[$i-1]); print ("\n"); #Test B
DisplayOneBoard($boardarray[0]); print ("\n----\n"); #Test C
$i++;
}
}
-我尝试将变量分配为 @boardarray 的元素,但没有任何变化。
-我在 foreach 循环中使用 @boardarray 并将其更改为复制的 @allboards 没有任何改进。
我希望“测试 A”和“测试 B”行是相同的,并且“测试 C”行保持我加载的第一个矩阵。但是,每次迭代所有三个都是相同的。
(对于迭代 1,它们都是矩阵 1。对于迭代 2,它们都是矩阵 2,等等。)
最后,所有元素都是完全相同的矩阵(矩阵 9)。
我们将不胜感激。谢谢。
【问题讨论】:
-
我没有看到你在这段代码的任何地方更新
$i。 -
我在 foreach 循环的最底部做了一个
$i++。
标签: arrays perl reference foreach