これをやってみてください:
print $data1->[1]->{name}; # ARRAY ref
print $data3->{2}->{name}; # HASH ref
これは、perl ARRAY および HASH ref からの逆参照です。
明示的に->
逆参照します。最初の「フロア」にのみ必要です。例:
print $data1->[1]{name};
print $data3->{2}{name};
あまりにも動作します。2番目以降はオプションです。
Chris Charley が言ったように、データ構造に関するチュートリアルを見てください。
スカラー参照がどのように見えるかを理解するのを助けるために、Data::Dumperを使用してください。例:
print Dumper $data1;
print Dumper $data3;
出力する必要があります:
$VAR1 = [
{
'name' => 'A',
'id' => 1
},
{
'name' => 'B',
'id' => 2
},
{
'name' => 'C',
'id' => 3
}
];
$VAR1 = {
'1' => {
'name' => 'A',
'id' => 1
},
'3' => {
'name' => 'C',
'id' => 3
},
'2' => {
'name' => 'B',
'id' => 2
}
};
+{ }
構文については、 rraは適切な応答を返します。
中かっこが匿名のハッシュ参照ではなくコード ブロックであると見なされる場所のあいまいさを解消しますが、それが必要になることはめったにありません。コードには、あいまいになる可能性のある場所と明確で一貫性を持たせたいという誤った欲求から、それらが含まれていると推測しています。