这是我的代码。
my $hash1 = $hash0->{unknown}{unknown};
while ( my ( $var, $hash2 ) = each %$hash1 ) {
...
}
"Can't use string ("package") as a HASH ref while "strict refs" in use"
当我尝试my $hash1 = $hash0->{unknown}{unknown}
从下面的哈希访问时遇到错误。
print Dumper $hash0;
$VAR1 =
bless( {
'branch' => bless( {
'lib/sample/sp.pm' => bless( {
'branch' => bless( {
'lib/sample/sp.pm'=> bless( {
'sample::sp' => '1'
}, 'DBM::Deep::Hash' )
}, 'DBM::Deep::Hash' ),
'branch' => $VAR1->{'branch'}{'lib/sample/sp.pm'}{'branch'}
}, 'DBM::Deep::Hash' )
}, 'DBM::Deep::Hash' ),
'main' => bless( {}, 'DBM::Deep::Hash' ),
'main' => $VAR1->{'main'}
}, 'DBM::Deep::Hash' );
我浏览了许多论坛,我对这个错误的理解是,当 $hash->{unknown}{unknown}
有一个字符串而不是哈希时会点击这个(我$hash1
在我的代码的下一步中取消引用)。但是我在哈希中看不到任何字符串值(错误消息中指示的“包”),但它仍然抱怨。
有人可以帮助我理解这个问题。