为什么我会“弃用伪哈希”?

时间:2011-03-07 15:07:00

标签: perl

我有这段代码

if (defined($xml->{account}->{p}) == '2') {
...
}

给了我这个警告

Pseudo-hashes are deprecated at a.pl line 48.

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

$xml是一个对象,如果这有所不同?

如何解决这个问题,所以Perl不抱怨?

1 个答案:

答案 0 :(得分:11)

$xml$xml->{account}是ARRAY,而不是HASH(您可以使用ref进行检查,请参阅perldoc -f ref)。 Perl有一个名为“伪哈希”的现已弃用的功能,它允许通过哈希语法访问特殊数组。如果你关心这段历史,可以去看看它或看一本旧版的骆驼书。