Это работает, насколько вы ушли.Добавление некоторых тестовых данных в вашу программу дает нам:
#!/usr/bin/perl
use strict;
use warnings;
my @aoaoh = (
[
{ a => 1, b => 2 },
{ c => 3, d => 4 },
],
[
{ a => 101, b => 102 },
{ c => 103, d => 104 },
],
);
for my $j (0 .. $#aoaoh) {
for my $aref (@aoaoh) {
print '"' . join('","', @$aref[$j]), "\"\n";
}
}
И выполнение, которое дает:
$ ./aoaoh
"HASH(0x9c45818)"
"HASH(0x9c70c48)"
"HASH(0x9c60418)"
"HASH(0x9c70c08)"
Итак, вы успешно прошли два уровня массивов, и вы просто осталисьс хэш-ссылками на разыменование.Возможно, что-то вроде этого:
#!/usr/bin/perl
use strict;
use warnings;
my @aoaoh = (
[
{ a => 1, b => 2 },
{ c => 3, d => 4 },
],
[
{ a => 101, b => 102 },
{ c => 103, d => 104 },
],
);
for my $j (0 .. $#aoaoh) {
for my $aref (@aoaoh) {
# print '"' . join('","', @$aref[$j]), "\"\n";
for (keys %{$aref->[$j]}) {
print "$_ -> $aref->[$j]{$_}\n";
}
}
}
Что дает:
$ ./aoaoh
a -> 1
b -> 2
a -> 101
b -> 102
c -> 3
d -> 4
c -> 103
d -> 104
Лично я бы написал так, потому что я думаю, что легче иметь дело с элементами, чем с индексами.
#!/usr/bin/perl
use strict;
use warnings;
my @aoaoh = (
[
{ a => 1, b => 2 },
{ c => 3, d => 4 },
],
[
{ a => 101, b => 102 },
{ c => 103, d => 104 },
],
);
for my $aref (@aoaoh) {
for my $href (@$aref) {
for (keys %{$href}) {
print "$_ -> $href->{$_}\n";
}
}
}