perlテスト2


http://bi.biopapyrus.net/perl/syntax/hash.html

#!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Data::Dumper;
5
6 my $var5 = {
7 array9 => [1 2 3]
8 hash9 => {
9 key1 => "val1"
10 key2 => "val2"
11 }
12 };
13
14 print Dumper $var5;
31 print $var5->{ hash9 }->{ key1 } ;


ハッシュのハッシュという多階層のハッシュは、Perl のリファレンスを利用して実現できる。まず、最初に 1 階層目のハッシュを宣言する。次に、そのハッシュにキーと値を代入する。値は空のハッシュのリファレンスとする。このようにする 2 階層からなるハッシュが作成できる。

# 1 階層目のハッシュ
my $hash_ref = {};

# key1 キーに対応する 2 階層目のハッシュ
$hash_ref->{ key1 } = {};

# key1 キーに対応する 2 階層目のハッシュに値を代入
$hash_ref->{ key1 }->{ subKey1 } = value11 ;
$hash_ref->{ key1 }->{ subKey2 } = value12 ;

# key2 キーに対応する 2 階層目のハッシュ
$hash_ref->{ key2 } = {};
$hash_ref->{ key2 }->{ subKey1 } = value21 ;
$hash_ref->{ key2 }->{ subKey2 } = value22 ;


すべての要素取得するときは、ハッシュの時と同様に for 文あるいは while を用いる。この場合、ハッシュが 2 階層となっているため、for 文は 2 回繰り返す必要がある。
for $mainKey ( keys %{$hash_ref} ){
for $subKey ( keys %{$hash_ref->{$mainKey}} ){
print "$mainKey $subKey $hash_ref->{$mainKey}->{$subKey}";
}
}