use strict;
use warnings;
my $hash = {
foo => {
bar => {
baz => "hi"
}
}
};
my @arr = qw/foo bar/;
在perl中是否有任何方法可以使用数组/哈希来指定密钥来构建哈希引用字符串/标识符?
所以使用上面的代码我想从@arr
获取字符串并使用它们来生成字符串
my $newhash = $hash->{'foo'}->{'bar'};
这只是一个例子,嵌套哈希的数量可以是变量
尝试
所以我知道,如果我知道嵌套的水平,那么我可以使用
my $newhash = { map { $_ => $hash->{$_} } qw/some values/ };
但是当嵌套未知时,我似乎无法想出办法。
perl 5.20
需要更多信息,请询问。
答案 0 :(得分:1)
你需要走下哈希树。
#!/usr/bin/env perl
# always use these two
use strict;
use warnings;
# use autodie to automatically die on open errors
use autodie;
my $hash = {
foo => {
bar => {
baz => "hi"
}
}
};
my @arr = qw/foo bar/;
my $hash_ref = $hash;
for my $key ( @arr ){
$hash_ref = $hash_ref->{$key};
}
# $hash_ref is now at the end of the array
print Dumper( $hash_ref );