当嵌套级别数量未知时,遍历嵌套哈希结构以获取值的最佳方法是什么?
例如,散列可以是以下任何一个或任何级别的嵌套。
my $hash = { 'known' => { 'a' => { 'b' => 'value' } } };
my $hash = { 'known' => { 'a' => { 'b' => { 'c' => 'value' } } } };
my $hash = { 'known' => { 'a' => { 'b' => { 'c' => { 'd' => 'value' } } } } };
下面的键 a、b、c 可以是任意值。
我想我可以用一个递归函数来做到这一点,该函数提取键和值以及当前级别,检查该值是否是对的引用 一个哈希值,如果是的话,它会调用自身,否则我有这个值?
最佳答案
易于阅读的方法:
#!/usr/bin/env perl
use strict;
use warnings;
my $hash = { 'known' => { 'a' => { 'b' => 'value' } } };
print get_deep_values($hash);
sub get_deep_values {
my $hash = shift;
if (ref($hash) eq 'HASH') {
get_deep_values( (values %$hash)[0] )
}
else {
return $hash;
}
}
输出:
value
关于perl - 如何从嵌套级别未知的嵌套哈希中提取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31022672/