在perl中访问Hash的问题

时间:2017-02-16 15:02:17

标签: perl hash perl-data-structures data-dumper

我在perl中有一个以下结构的哈希 -

my %testHash = (
        KeyL1 => {
            KeyLL1 => {
                KeyLLL1 => [1,2],
                KeyLLL2 => [2,3],
            },
            KeyLL2 => {
                KeyLLL1 => [1,2],
                KeyLLL2 => [2,3],
            },
            KeyLL3 => {
                KeyLLL1 => [1,2],
                KeyLLL2 => [2,3],
            },            
        },
        KeyL2 => {
            KeyLL1 => {
                KeyLLL1 => [1,2],
                KeyLLL2 => [2,3],
            },
            KeyLL2 => {
                KeyLLL1 => [1,2],
                KeyLLL2 => [2,3],
            },
            KeyLL3 => {
                KeyLLL1 => [1,2],
                KeyLLL2 => [2,3],
            }, 
        },
        );

现在,当我尝试以下列方式访问它时,结果我得到'undef'

my %tempHash = $testHash{'KeyL1'};
print Data::Dumper::Dumper($tempHash{'KeyLL1'});
print Data::Dumper::Dumper($tempHash{'KeyLL1'}{'KeyLLL1'});

结果 -

$VAR1 = undef; $VAR1 = undef;

请指出我做错了什么。我对perl很新。

2 个答案:

答案 0 :(得分:4)

$testHash{'KeyL1'}的值是hashref,而不是哈希值。

Hashrefs是标量。 my %tempHash =并不期待一个标量。

你需要取消引用它:

my %tempHash = %{$testHash{'KeyL1'}};

答案 1 :(得分:0)

另外,如果只是查看结构,你可以这样做。

也可以尝试:

current

<强>输出:

print Dumper $testHash{KeyL1} ;
print Dumper $testHash{KeyL1}{KeyLL1} ;
print Dumper $testHash{KeyL1}{KeyLL1}{KeyLLL1} ;