我本来想自己解决这个问题,但是我的脸现在因为不断地撞到这堵墙而疼痛。
我正在尝试加载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,但没有改善。
我希望'Test A'和'Test B'行相同,并且'Test C'行保持我加载的第一个矩阵。 但是,每次迭代都是相同的三个矩阵。
(对于迭代1,它们都是矩阵1。 对于迭代2,它们都是矩阵2等)
最后,所有元素都是完全相同的矩阵(矩阵9)。
任何帮助都将不胜感激。谢谢。
$i
的任何地方。 - mob$i++
。 - Royal Connell