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

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

4

2 回答 2

9

获取参考的新能力keys被设计破坏了。Perl 的开发团队无法弄清楚它应该如何处理一些引用,因此它只适用于一些引用。因此,keys接受参考的能力被证明是实验性的。无法解决此问题,此“功能”已在 5.24 中删除。你不应该使用它,因为当你升级你的perl.

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

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

整个事情可以这样写:

if (!keys(%{ $this->{libraries}{$y}{cellHash} })) { ... }
于 2013-06-13T06:07:14.593 回答
-1

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

于 2013-06-13T06:07:22.457 回答