为什么我会"弃用伪哈希"?

San*_*ing 4 perl

我有这个代码

if (defined($xml->{account}->{p}) == '2') {
...
}
Run Code Online (Sandbox Code Playgroud)

这给了我这个警告

Pseudo-hashes are deprecated at a.pl line 48.
Run Code Online (Sandbox Code Playgroud)

问题是在某些情况下$xml->{account}->{p}不存在,这就是我添加defined功能的原因.

$xml 是一个对象,如果这有所作为?

怎么能修复,所以Perl不抱怨?

Dav*_*ell 11

要么$xml或者$xml->{account}是一个数组,而不是HASH(你可以用ref检查此,请参阅perldoc -f ref).Perl有一个名为"伪哈希"的现已弃用的功能,它允许通过哈希语法访问特殊数组.如果你关心历史,你可以谷歌或者看一本旧版的骆驼书.