Perl連想配列の使い方について
はじめまして。
現在、業務で他人の書いたコード(Perl)を改造しているのですが、その作成者がいなくなってしまっております。
そのコードを見ると、なぜ、このような書き方が可能なのか、理解できないので、動作原理を教えていただけないでしょうか?
以下のようなコードです。
====================================
my @arr = ( "一" , "ニ" , "三" , "四" ) ;
my %data ;
$data->{0} = \@arr ;
$data{0}{test} = "テスト" ;
print ${$data->{0}}[1] . "\n" ;
print $data{0}{test} . "\n" ;
====================================
出力はこのようになります。
ニ
テスト
ここからが質問なのですが、$data->{0}という書き方ができる理由が分からないのです。
$dataが例えば、
my %my_hash ;
my $data = \%my_hash ;
というように、ハッシュのリファレンスであるならば、$data->{0}という書き方も分かるのですが、定義した時点でリファレンスではない、$dataに、何故"->"の演算子が使えるのでしょうか?
とはいえ、
ref $data ;
の戻り値がHASHとなるのも確認しています。
これもどうしてそうなるのか、根本的な原理が分かっておりません。
どうか、このコードの動作原理を教えていただけないでしょうか。
抽象的な質問となっている気がしますが、宜しくお願いいたします。
お礼
クロックという言葉もあわせて検索にかけてみました。いいヒントになったので、参考にさせていただきます。ありがとうございました!