多次元配列エミュレート
実は、私もよく知らないのですが、『$;』を調べていて辿りつきました。
Perl4の時代はリファレンスがなかったので、多次元を以下の方法でエミュレートしていたらしい。
ちなみに、『$;』は、デフォルト値が "\034"で、詳しくは以下を参照してください。
Perl4での多次元配列エミュレートサンプル(taji4.pl)
use strict; use warnings; print "--多次元配列エミュレート for Perl4--\n"; my %hash4 = ( "0$;0" => 'A1', "0$;1" => 'B1', "0$;2" => 'C1', "1$;0" => 'A2', "1$;1" => 'B2', "1$;2" => 'C2', "2$;0" => 'A3', "2$;1" => 'B3', "2$;2" => 'C3', ); print $hash4{0,0}, " | "; print $hash4{0,1}, " | "; print $hash4{0,2}, "\n"; print $hash4{1,0}, " | "; print $hash4{1,1}, " | "; print $hash4{1,2}, "\n"; print $hash4{2,0}, " | "; print $hash4{2,1}, " | "; print $hash4{2,2}, "\n";
C:\test>perl taji4.pl --多次元配列エミュレート for Perl4-- A1 | B1 | C1 A2 | B2 | C2 A3 | B3 | C3
ちなみにPerl5での多次元ハッシュ&多次元配列サンプル(taji5.pl)
use strict; use warnings; print "--多次元ハッシュ--\n"; my %hash5 = ( 0 => {0 => 'A1', 1 => 'B1', 2 => 'C1'}, 1 => {0 => 'A2', 1 => 'B2', 2 => 'C2'}, 2 => {0 => 'A3', 1 => 'B3', 2 => 'C3'}, ); print $hash5{0}{0}, " | "; print $hash5{0}{1}, " | "; print $hash5{0}{2}, "\n"; print $hash5{1}{0}, " | "; print $hash5{1}{1}, " | "; print $hash5{1}{2}, "\n"; print $hash5{2}{0}, " | "; print $hash5{2}{1}, " | "; print $hash5{2}{2}, "\n"; print "--多次元配列--\n"; my @array = ( [ qw(A1 B1 C1) ], [ qw(A2 B2 C2) ], [ qw(A3 B3 C3) ], ); print $array[0][0], " | "; print $array[0][1], " | "; print $array[0][2], "\n"; print $array[1][0], " | "; print $array[1][1], " | "; print $array[1][2], "\n"; print $array[2][0], " | "; print $array[2][1], " | "; print $array[2][2], "\n";
C:\test>perl taji5.pl --多次元ハッシュ-- A1 | B1 | C1 A2 | B2 | C2 A3 | B3 | C3 --多次元配列-- A1 | B1 | C1 A2 | B2 | C2 A3 | B3 | C3