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

Я очень плохо знаком с Perl, и мне поручено поддерживать веб-страницу. Я нашел ошибку, которую я не знаю, как исправить.

Сценарий Perl останавливается на следующем коде.

my @failedTests = (sort(keys ($TestResultsData{$currPlatform}{$currDate}{failedtests})));
while ( @failedTests )
{
 ...

Сообщение об ошибке:

Type of argument to keys on reference must be unblessed hashref or arrayref.

Можно ли переписать эту строку кода, чтобы она работала?

1 ответ

Решение

Значение $TestResultsData{$currPlatform}{$currDate}{failedtests} это благословенный хэшреф. keys трусливый отказывается работать с благословенными хеш-референциями, потому что это разрушит иллюзию инкапсуляции и перегрузки.

(Более старые версии Perl вообще не принимают хэшреф - вам нужно было передать ему правильный хэш.)

Попробуйте вручную разыменовать хеш-ссылку в хеш, используя:

my @failedtests = sort keys %{ $TestResultsData{$currPlatform}{$currDate}{failedtests} };
Другие вопросы по тегам