我有一个大的多维哈希,它是JSON结构的导入。
我的%bighash;%bighash中有一个元素叫:
$ bighash {‘core’} {‘dates’} {‘year’} = 2019年。我有一个单独的……
Hash::Fold 在这里似乎很有帮助。您可以“展平”您的哈希值,然后使用单个键访问所有内容。
Hash::Fold
use Hash::Fold 'flatten'; my $flathash = flatten(\%bighash, delimiter => '.'); print $flathash->{"core.dates.year"};
当我使用时,有人可以指出我正在发生的事情 $bighash{\%hash} ]?
$bighash{\%hash}
散列键是字符串,以及字符串化 \%hash 是这样的 HASH(0x655178) 。唯一的元素 %bighash 具有 core 锟斤拷不 HASH(0x655178) 对于密钥,所以哈希查找返回 undef 。
\%hash
HASH(0x655178)
%bighash
core
undef
有用的工具:
sub dive_val :lvalue { my $p = \shift; $p //= \( $$p->{$_} ) for @_; $$p } # For setting sub dive { my $r = shift; $r //= $r->{$_} for @_; $r } # For getting dive_val(\%hash, split /\./, 'core.dates.year') = 2019; say dive(\%hash, split /\./, 'core.dates.year');