我有这段代码
if (defined($xml->{account}->{p}) == '2') {
...
}
给了我这个警告
Pseudo-hashes are deprecated at a.pl line 48.
问题在于,在某些情况下$xml->{account}->{p}
不存在,这就是我添加defined
函数的原因。
$xml
是一个对象,如果这有所不同?
如何解决这个问题,所以Perl不抱怨?
答案 0 :(得分:11)
$xml
或$xml->{account}
是ARRAY,而不是HASH(您可以使用ref
进行检查,请参阅perldoc -f ref
)。 Perl有一个名为“伪哈希”的现已弃用的功能,它允许通过哈希语法访问特殊数组。如果你关心这段历史,可以去看看它或看一本旧版的骆驼书。