【发布时间】:2012-05-28 11:43:55
【问题描述】:
这不起作用:
my %y = ("lkj",34);
my %i = ("lkj",66);
my @e = (\%y, \%i);
my $u = ${%{$e[0]}}{"lkj"};
但确实如此:
my %u = %{$e[0]};
print $u{"lkj"};
如果我不想输入额外的行,我该怎么办。
【问题讨论】:
这不起作用:
my %y = ("lkj",34);
my %i = ("lkj",66);
my @e = (\%y, \%i);
my $u = ${%{$e[0]}}{"lkj"};
但确实如此:
my %u = %{$e[0]};
print $u{"lkj"};
如果我不想输入额外的行,我该怎么办。
【问题讨论】:
您使用-> 运算符:
$e[0]->{"lkj"}
你可以对 arrayrefs 做类似的事情,它甚至可以链接:
my $eref = \@e;
print $eref->[0]->{"lkj"}
作为奖励,您也可以使用数组引用的 {} 简写在一行中完成所有设置:
my @e = ( { lkj => 34 }, { lkj => 66 } );
【讨论】:
-> 在索引之间使用时可以隐含; $e[0]{lkj} 和 $eref->[0]{lkj} 可以正常工作。