Тип аргумента для ключей на ссылке должен быть unbssed hashref или arrayref

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

Это строка, где я получаю сообщение об ошибке "Тип аргумента для ключей по ссылке должен быть необъяснимым hashref или arrayref". Можете ли вы помочь мне исправить это? Я не публикую код по понятным причинам.

2 ответа

Новая способность keys взять ссылку сломана по дизайну. Команда разработчиков Perl не могла понять, как он должен работать с некоторыми ссылками, поэтому он работает только для некоторых ссылок. В качестве таких, keysСпособность принять ссылку задокументирована как экспериментальная. Не удалось решить эту проблему, эта "функция" была удалена 5.24. Вы не должны использовать его, так как ваш код перестанет работать при обновлении perl,

Вы попали в те случаи, когда keys не работает при наличии ссылки. Вместо этого укажите хеш или массив. В этом случае вы, вероятно, хотите

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

Все это можно записать следующим образом:

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

%{$this->{'library'}->{$y}->{'cellHash'}} . Я пропустил цветочную скобку и% .

Другие вопросы по тегам