Perlで2次元連想配列を使ってみた
ちょっとしたことから「Perlの連想配列って、2次元で使えるのかな?」と気になったので、試してみた。
その結果、ちゃんと使えることが分かったので、まとめておく。
要点
$array{$firstkey}{$secondkey}の場合
foreach $firstkey ( sort keys %array ){ # $firstkeyの要素が取り出せる } foreach $secondkey ( sort keys %{$array{$firstkey}} ){ # $secondkeyの要素が取り出せる }
サンプルスクリプト
$ cat 2d-assocarray.pl #!/usr/bin/perl # 2d-assocarray.pl $array{"1"}{"A"}="A1"; $array{"1"}{"B"}="B1"; $array{"1"}{"C"}="C1"; $array{"2"}{"A"}="A2"; $array{"2"}{"B"}="B2"; $array{"2"}{"C"}="C2"; foreach $firstkey ( sort keys %array ){ print "firstkey->$firstkey\n"; foreach $secondkey ( sort keys %{$array{$firstkey}} ){ print "secondkey->$secondkey\tvalue->$array{$firstkey}{$secondkey}\n"; } print "----------\n"; } foreach $firstkey ( sort keys %array ){ $firstkeylist{$firstkey}=1; foreach $secondkey ( sort keys %{$array{$firstkey}} ){ $secondkeylist{$secondkey}=1; } } foreach $secondkey ( sort keys %secondkeylist ){ print "\t$secondkey"; } print "\n"; foreach $firstkey ( sort keys %firstkeylist ){ print $firstkey; foreach $secondkey ( sort keys %secondkeylist ){ print "\t$array{$firstkey}{$secondkey}"; } print "\n"; }