我在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很新。
答案 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} ;