如何解决如何使用键列表获取深度散列的元素?
给定一个哈希值和一个键列表,我如何访问键指定的值?
换句话说:
my $h = {};
my @key = qw(hello to everyone);
我怎么去
$h->{hello}->{to}->{everyone}
一口气?
解决方法
不是我的回答 - 功劳通过 Merlyn on PerlMonks 转到 Polettix。
use List::Util;
sub pointer_to_element {
return reduce(sub { \($$a->{$b}) },\shift,@_);
}
my $h = { hello => {to => 'everyone'} };
my @key = qw/hello to/;
# get the element
my $scalar_ref = pointer_to_element($h,@key);
print $$scalar_ref,"\n"; # prints "everyone"
# set the element
$$scalar_ref = 'everybody';
# and check it
print "$hash{hello}{to}\n"; # prints "everybody"
把它放在这里是因为它是一颗宝石,并且方便每个人使用谷歌搜索。
我希望原作者没问题(如果不是,我会删除它)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。