2012-05-22 43 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