二次元ハッシュ

二次元の連想配列を定義します。
連想配列の名前は先頭の文字を「%」で始めます。

プログラムの説明

  1. エディタで hash.pl を作成して下さい。
    '果物', '動物', '花' が一次元のキーです。
    'リンゴ', 'ねこ' などが二次元のキーです。
    '本文1' などがデータの本文ですが、内容は省略しています。
    # $a{'a'}->{'A1'} = 1 のような形になる
    %a = ( '果物' => { 'リンゴ'=>'本文1', 'いちご'=>'本文2', 'バナナ'=>'本文3' }, 
           '動物' => { 'ねこ'=>'本文4', 'いぬ"'=>'本文5' },
           '花' => { 'バラ'=>'本文6', '菊'=>'本文7', 'ぼたん'=>'本文8', 'ゆり'=>'本文9' } );
    
    foreach my $key1 ( keys %a )
    {   foreach my $key2 ( keys %{$a{$key1}} )
        {   print "$key1, $key2, ". $a{$key1}->{$key2} ."\n";  }
    }
    
  2. 【実行画面】
    C:\DATA\Perl>perl hash.pl
    果物, バナナ, 本文3
    果物, いちご, 本文2
    果物, リンゴ, 本文1
    動物, ねこ, 本文4
    動物, いぬ", 本文5
    花, 菊, 本文7
    花, ゆり, 本文9
    花, バラ, 本文6
    花, ぼたん, 本文8
    
    C:\DATA\Perl>
    
  3. 一次元のみ取り出して表示してみました。
    # $a{'a'}->{'A1'} = 1 のような形になる
    %a = ( '果物' => { 'リンゴ'=>'本文1', 'いちご'=>'本文2', 'バナナ'=>'本文3' }, 
           '動物' => { 'ねこ'=>'本文4', 'いぬ"'=>'本文5' },
           '花' => { 'バラ'=>'本文6', '菊'=>'本文7', 'ぼたん'=>'本文8', 'ゆり'=>'本文9' } );
    
    #-- 1次元のみ取出す --#
    foreach my $key ( keys %a )
    {   print "$key, $a{$key}\n";  }
    
    【実行結果】
    ハッシュとは、検索キーをシノニムが発生しないように変換した値で、ハッシュキー自体には意味がありません。
    シノニムとは、異なるキーをある規則で変換したとき、たまたま同じ値になることです。
    C:\DATA\Perl>perl hash.pl
    花, HASH(0x484610)
    動物, HASH(0x484538)
    果物, HASH(0x5ac0c8)
    
    C:\DATA\Perl>
    

前田稔の超初心者のプログラム入門
超初心者のプログラム入門(Perl)