Perl使用一系列键进行哈希处理

时间:2016-11-03 20:06:17

标签: perl design-patterns hashmap

给定一个包含n个元素(n大于1)的数组,是否有一种优雅的方式来引用哈希结构中的元素,其中每个元素都是序列中的键?

例如:

my @foo = ('a','b','z');

鉴于此或类似内容,我想访问以下内容:

$hash->{'a'}->{'b'}->{'z'}

如果这是一个固定数量的元素,那么它很简单,但我不知道它在运行时会有多少(当然不会超过6或7,但是其他方面也是不可能的)。

我能想到的唯一模式都涉及循环和引用,看起来很笨拙。是否有一些东西不占用半页或需要Data :: Dumper如果你只是为了调试而输入错误?

1 个答案:

答案 0 :(得分:8)

这就是Data::Diver存在的原因:

#!/usr/bin/perl
use warnings;
use strict;

use Data::Diver qw{ Dive };

my $hash = { a => { b => { z => 'HERE' } } };

my @foo = qw( a b z );

print Dive($hash, @foo);