Perl:哈希参考访问密钥数组
我有一个似乎基本的问题,但我无法弄清楚.说我在Perl中有哈希引用.我想通过一个键数组来获取一个数组.
以下是使用哈希而不是散列引用的方法: my %testHash = ( "a" => 1,"b" => 2,"c" => 3 ); my @testKeys = ("a","b","c"); my @testValues = @testHash{@testKeys}; 现在假设我有一个哈希引用, my $hashRef = {"a" => 1,"c" => 3}; 我尝试了以下两种方式: my @values = @{$hashRef->{@testKeys}}; my @values = $hashRef->{@testKeys}; 但是两者都不正确.有没有正确的方法,或者我只需要取消引用散列引用每次我想这样做? 解决方法
你很近
my @values = @$hashref{@testKeys}; ## (1) 要么 my @values = @{$hashref}{@testKeys}; ## (2) 有关更多示例,请参阅“Slices” in the perllol documentation. “Using References” in the perlref documentation给出了一般规则.
这就解释了为什么(1)工作:用简单的标量$hashRef替换了标识符testHash.
上面的代码片段(2)几乎相同,但是有一些较大的语法.代替标识符testHash,你写一个返回一个散列引用的块,即{$hashRef}. 这里的大括号包含一个真正的块,所以你可以计算并返回一个引用,如in push @{ $cond ? @a1 : @a2 },"some value"; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |