引用键的参数类型必须是非散列的hashref或arrayref

时间:2013-06-13 05:58:00

标签: perl hashref arrayref

    if((scalar keys ($this->{'libraries'}->{$y}->{'cellHash'})) == 0){

这是我得到的“引用键的参数类型必须是unblessed hashref或arrayref”错误的行。你能帮我解决这个问题吗? 我不是出于显而易见的原因发布代码。

2 个答案:

答案 0 :(得分:8)

keys引用参考的新能力被设计破坏了。 Perl的开发团队无法弄清楚它应该如何与一些引用一起工作,因此它仅适用于某些引用。因此,keys接受引用的能力记录为experimental。无法解决此问题,此“功能”已被删除5.24。您不应该使用它,因为升级perl时代码将停止工作。

你已经看到了keys在给出引用时不起作用的情况。改为提供哈希或数组。在这种情况下,您可能需要

keys(%{ $this->{'libraries'}->{$y}->{'cellHash'} })

整个事情可以写成如下:

if (!keys(%{ $this->{libraries}{$y}{cellHash} })) { ... }

答案 1 :(得分:-1)

%{$ this-> {'libraries'} - > {$ y} - > {'cellHash'}}。我错过了花括号和%。