2012-05-22 59 views
3

这不起作用:解引用的哈希值

my %y = ("lkj",34); 
my %i = ("lkj",66); 
my @e = (\%y, \%i); 
my $u = ${%{$e[0]}}{"lkj"}; 

但确实:

  my %u = %{$e[0]}; 
     print $u{"lkj"}; 

如果我不喜欢打字,额外的行,该怎么办。

回答

8

您使用->操作:

$e[0]->{"lkj"} 

你可以做arrayrefs类似的东西,它甚至可链接:

my $eref = \@e; 
print $eref->[0]->{"lkj"} 

作为奖励,你可以做所有安装在单一也可以用{}这个简写为arrayrefs:

my @e = ({ lkj => 34 }, { lkj => 66 }); 
+6

' - >'可以暗示当在索引之间使用时; '$ e [0] {lkj}'和'$ eref - > [0] {lkj}'可以正常工作。 – ikegami