использование массива в качестве ссылки не рекомендуется в Perl - PullRequest
0 голосов
/ 21 мая 2019

Ошибка ниже: использование массива в качестве ссылки не рекомендуется в скрипте perl в строке

Пожалуйста, подскажите, что не так в приведенном ниже коде.

$sqlsyntax="exec Stored_Procedure,\@ErroeCode='$ErrMsg`"; 
@ret = $dbh->nsql ($sqlsyntax,"ARRAY");

my($EntityId,
$MaturutyDate);
my($size,$index,$count);
$size=scalar @ret;
$index=0;
$EntityId=@ret->[$index][0];
$MaturutyDate=@ret->[$index][9];

Этот perl работает нормальнов Solaris, но когда он переносится в среду Linux, он выдает эту ошибку.

Получение ниже Ошибка: использование массива в качестве ссылки не рекомендуется в скрипте perl в строке

Во время компиляции этодавая эту ошибку, Хотите исправить это в среде Linux.

1 Ответ

4 голосов
/ 21 мая 2019

Я не уверен, откуда вы взяли этот код, но он использует очень старую версию синтаксиса Perl, которую вы не должны были использовать в течение очень долгого времени. [ Обновление: Как указывает ikegami в комментарии ниже, это не очень старый синтаксис Perl - это синтаксис, который работал только из-за ошибки в Perl и который никогда не должен был использоваться.]

@ret->[$index][0]

Этот код использует тот факт, что массив (при определенных обстоятельствах) может использоваться как ссылка на массив. Вы не должны этого делать, так как есть другие (более простые) способы сделать то же самое. Как вы видите, этот синтаксис устарел.

Ваш код должен быть написан как $ret[$index][0]. Если вы измените его так, чтобы предупреждения исчезли.

Обновление:

Этот perl нормально работает в Solaris, но когда он переносится в среду Linux, он выдает эту ошибку.

Я полагаю, это потому, что ваша система Solaris работает на гораздо более старой версии Perl. Что вы получаете от запуска perl -v на обеих ваших системах?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...