尝试这样做:
print $data1->[1]->{name}; # ARRAY ref
print $data3->{2}->{name}; # HASH ref
这是从 perl ARRAY 和 HASH ref取消引用。
显式->
取消引用。只有第一层“楼层”才需要它,例如:
print $data1->[1]{name};
print $data3->{2}{name};
也可以。第二个和更多是可选的。
就像 Chris Charley 说的,看看关于数据结构的教程
为了帮助您了解标量 ref 的外观,请使用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给出了很好的响应:
在可以将大括号视为代码块而不是匿名哈希引用的地方消除歧义,但很少需要这样做。我猜代码包含它们是出于一种错误的愿望,即清晰并与可能模棱两可的地方保持一致。