if((scalar keys ($this->{'libraries'}->{$y}->{'cellHash'})) == 0){
これは、「参照のキーへの引数のタイプは、unblessed hashref または arrayref でなければなりません」というエラーが発生する行です。これを修正するのを手伝ってもらえますか? 明らかな理由により、コードを投稿していません。
keys
参照を取るという新しい機能は、設計上壊れています。Perl の開発チームは、一部の参照でどのように機能するかを理解できなかったため、一部の参照でのみ機能します。そのkeys
ため、参照を受け入れる の機能は実験的であると文書化されています。この問題を解決できません。この「機能」は 5.24 で削除されました。をアップグレードするとコードが機能しなくなるため、使用しないでくださいperl
。
keys
参照が与えられたときに機能しないケースに遭遇しました。代わりにハッシュまたは配列を指定してください。この場合、おそらく
keys(%{ $this->{'libraries'}->{$y}->{'cellHash'} })
全体は次のように記述できます。
if (!keys(%{ $this->{libraries}{$y}{cellHash} })) { ... }
%{$this->{'libraries'}->{$y}->{'cellHash'}} .花かっこと % を見逃していました。