Я действительно хотел выяснить это сам, но теперь у меня постоянно болит лицо от этой кирпичной стены.
Я пытаюсь загрузить 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 без изменений.
-Я использовал @boardarray в цикле foreach и изменил егок скопированным @allboards без улучшений.
Я ожидаю, что строки 'Test A' и 'Test B' будут одинаковыми, а строка 'Test C' останется первой загруженной матрицей. Однако все триодинаковы для каждой итерации.
(для итерации 1 они все являются матрицей 1. Для итерации 2 они все являются матрицей 2 и т. д.)
В конце все элементы представляют собой одну и ту же матрицу (матрица 9).
Любая помощь будет принята с благодарностью.Спасибо.