如何在Perl中仅取消引用数组哈希的哈希?

时间:2015-11-04 12:42:57

标签: perl hash

{    
    'A' =>      ['B'], //hash of array   
    'C' => {'D' => [  'E']} //hash of hash of array    
}

尝试解析数组哈希的哈希值时。得到“不是HASH参考”错误。即使我尝试使用存在和定义的关键字来避免此错误。但结果是同样的错误。

从上面我只需要迭代数组哈希的哈希值。

foreach my $keys (keys %$hash){
        print "$keys";
     if (defined $hash->{$keys}->{maptype}){
            foreach my $array_element ( @{$hash->{$keys}->{'D'}} ) {
                        print "$array_element"); 
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

不确定这是否是最佳做法,但是:

my $hash = { A => ['B'], C => {D => ['E'], F => [qw(G H I)]}, J=>42 };

for my $key (keys %$hash) {
    if (ref $hash->{$key} eq 'HASH') {
        for my $subkey (keys %{$hash->{$key}}) {
            say "$key => $subkey => [", join(",", @{$hash->{$key}{$subkey}}), "]";
        }
    }
}

输出

C => D => [E]
C => F => [G,H,I]
相关问题