hashレファレンス内の変数を初期化すると…

hashレファレンス内の変数を初期化すると、その変数は切り離されてhashの中には元々の変数のコピーが残るようだ。言葉にするとややこしいが、こんな感じ。

use strict;

# 空のハッシュを別のハッシュの中に入れる
my $inner_hash = +{};
my $outer_hash = +{
    inner => $inner_hash,
};

# 当然どっちから参照しても空っぽ
print "outer1: ".$outer_hash->{inner}->{1}."\n";
print "inner_1: ".$inner_hash->{1}."\n";