Я пытаюсь перебирать 2D-массив, который структурирован таким образом. Независимо от того, является ли это хорошим способом структурирования массива, возникает другой вопрос - мне все же нужно иметь возможность перебирать его (если это возможно).Perl: Итерация через этот фанковый массив?
@row1 = ("Current Scan", "Last Month");
@row2 = ("240", "0");
@row3 = ("226", "209");
@row4 = ("215", "207");
@array = (\@row1, \@row2, \@row3, \@row4);
print Dumper(@array);
printarray(@array);
Хранитель дает мне следующий вывод:
$VAR1 = [
'Current Scan',
'Last Month'
];
$VAR2 = [
'240',
'0'
];
$VAR3 = [
'226',
'209'
];
$VAR4 = [
'215',
'207'
];
Я пытался несколько для шлейфов без успеха. Каждый печатает только первую строку ($ VAR1) и завершает работу. Вот моя последняя попытка:
sub printarray {
@array = shift;
$rowi = 0;
foreach my $row (@array) {
for (my $coli = 0; $coli <= @$row; $coli++) {
print "$array[$rowi][$coli]\n";
}
$rowi++;
}
}
Я, очевидно, пропускаю что-то простое. Что я делаю не так? Заранее спасибо!
Не уверен, что результат вы ожидаете, но есть ошибка в использовании 'length' функции. Это вам не нужно, поскольку возвращает длину строки. Используйте '$ coli <@ $ row' для условия цикла. –
Спасибо, я отредактировал его, чтобы надеяться сделать его более понятным. Я просто пытаюсь выполнить итерацию по всему массиву, и по какой-то причине он проходит только первую строку. – Magicked
Я забыл очень важную часть, я думаю. Сначала я подумал, что это только то, что я закрутил итерацию, но я забыл, что передал ее через подпрограмму ... Я предполагаю, что это проблема ... – Magicked