Тип аргумента для ключей на ссылку должен быть необоснованным
Я очень плохо знаком с 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} };