取消引用哈希值

Sam*_*msh 3 perl hash reference

这不起作用:

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

但这样做:

         my %u = %{$e[0]};
         print $u{"lkj"};
Run Code Online (Sandbox Code Playgroud)

如果我不想输入额外的行,我该怎么办.

dus*_*uff 8

您使用->运营商:

$e[0]->{"lkj"}
Run Code Online (Sandbox Code Playgroud)

你可以为arrayrefs做类似的事情,它甚至可以链接:

my $eref = \@e;
print $eref->[0]->{"lkj"}
Run Code Online (Sandbox Code Playgroud)

作为奖励,您可以通过使用{}arrayrefs 的简写来在一行中完成所有设置:

my @e = ( { lkj => 34 }, { lkj => 66 } );
Run Code Online (Sandbox Code Playgroud)

  • 在索引之间使用时可以隐含` - >`; `$ e [0] {lkj}`和`$ eref - > [0] {lkj}`会正常工作. (6认同)