Подтвердить что ты не робот

Perl: использование хеша в качестве ссылки устарело

Я разрабатываю script, который повторно использует какой-то действительно старый фрагмент кода perl.

Эта строка дает мне по-прежнему ошибку Использование хеша в качестве ссылки устарело.

  %hash->{$_[$counter]} = $_[$counter+1];

Как мне нужно реорганизовать этот код, чтобы я не получал ошибку.

4b9b3361

Ответ 1

Try

$hash{$_[$counter]} = $_[$counter+1];

Ответ 2

Что слева от ->{ должно быть хеш-ссылкой, а не хешем. Если у вас есть хэш, опустите -> и просто скажите $hash{.

Педантично %hash->{...} должен делать то, что (my $temp=%hash)->{...} делает: получить скалярное значение% hash (например, "1/8", указывая 1 из 8 используемых ковшей) и использовать это как символическую хеш-ссылку (с ошибкой ошибка при использовании строгая "refs" ). Но из-за несчастного случая это было тихо переинтерпретировано как $hash{...}. Эта ошибка будет исправлена ​​когда-нибудь, но тем временем людям предупреждают об изменении своего неправильного кода.