Perl で深い構造がどのように見えるかを理解するのに役立つ良い方法は、Data::Dumperを使用することです。例えば:
use strict;
use warnings;
use Data::Dumper;
my @name = ("Jack S", "John L", "Cary S");
my @number = ("29", "78", "54");
my @bigNumber = ("40000", "50000", "60000");
my @array2D = (\@name, \@number, \@bigNumber);
print Dumper \@array2D;
次の出力が表示されます。
$VAR1 = [
[
'Jack S',
'John L',
'Cary S'
],
[
'29',
'78',
'54'
],
[
'40000',
'50000',
'60000'
]
];
Dumper
つまり、それぞれが配列参照である 3 つの項目を含む配列への参照を渡しました。
したがって、これらの配列をループして、それぞれの最初のスロットに項目を出力したい場合は、次のようにします。
foreach my $ref( @array2D ) {
print $ref->[0], " ";
}
print "\n";
そして、それは次のように出力されます:
Jack S 29 40000
それを一般化してすべてのレコードを印刷したい場合は、次のようにすることができます。(これは、ネストされたすべての配列が最初の配列と同じサイズであることを前提としています。)
my $count = @{ $array2D[0] };
foreach my $index( 0 .. $count - 1) {
foreach my $ref( @array2D ) {
print $ref->[$index], " ";
}
print "\n";
}
出力:
Jack S 29 40000
John L 78 50000
Cary S 54 60000
ただし、この時点で、構造を再考することをお勧めします。たとえば、名前でインデックス付けされた配列のハッシュが必要な場合があります。