燈明ブログ

現状は小池啓仁の応援ブログ

多次元配列エミュレート

実は、私もよく知らないのですが、『$;』を調べていて辿りつきました。
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