Ответ 1
Try
$hash{$_[$counter]} = $_[$counter+1];
Я разрабатываю script, который повторно использует какой-то действительно старый фрагмент кода perl.
Эта строка дает мне по-прежнему ошибку Использование хеша в качестве ссылки устарело.
%hash->{$_[$counter]} = $_[$counter+1];
Как мне нужно реорганизовать этот код, чтобы я не получал ошибку.
Try
$hash{$_[$counter]} = $_[$counter+1];
Что слева от ->{
должно быть хеш-ссылкой, а не хешем. Если у вас есть хэш, опустите ->
и просто скажите $hash{
.
Педантично %hash->{...}
должен делать то, что (my $temp=%hash)->{...}
делает: получить скалярное значение% hash (например, "1/8", указывая 1 из 8 используемых ковшей) и использовать это как символическую хеш-ссылку (с ошибкой ошибка при использовании строгая "refs" ). Но из-за несчастного случая это было тихо переинтерпретировано как $hash{...}
.
Эта ошибка будет исправлена когда-нибудь, но тем временем людям предупреждают об изменении своего неправильного кода.