リファレンスの値を別の変数からいじりたい時の注意点
例えば、このようなコードをすっきる見せるために、
$self->{'foo'}->{'bar'} = 123; $self->{'foo'}->{'baz'} = 456; . . .
このようにエイリアスを持たせて書きたい場合、
my $data = $self->{'foo'}; $data->{'bar'} = 123; $data->{'baz'} = 456;
$self->{'foo'} が undef の場合、参照している内容はリファレンスでは無いので、本来欲しい結果とは違うものになります。
上記の結果は、
$VAR1 = {};
こうなります。
意図した結果にするには、
my $data = $self->{'foo'} = {}; $data->{'bar'} = 123; $data->{'baz'} = 456;
このように、リファレンスを代入してから操作する必要があります。
これで無事こうなります。
$VAR1 = { 'foo' => { 'bar' => 123, 'baz' => 456, } };