Невозможно использовать «my $ _» в новых версиях Perl - PullRequest
4 голосов
/ 04 апреля 2020

В Perl 5.28.1 следующее утверждение недопустимо:

>perl
my $_;

Can't use global $_ in "my" at - line 1, near "my $_"
Execution of - aborted due to compilation errors.

Это работало по крайней мере до Perl 5.16.3. Эта конструкция была удалена из Perl, или это ошибка? Если это было удалено, я считаю, что это большая проблема, так как эта конструкция basi c интенсивно использовалась в прошлом, и это также продемонстрировано в документации Perl. Ни Perl история не упоминает о столь значительном изменении языка.

1 Ответ

5 голосов
/ 04 апреля 2020

Была ли эта конструкция удалена из Perl, или это ошибка?

Из perldo c perlvar :

$ _ - это глобальная переменная.

Однако, между perl v5.10.0 и v5.24.0, ее можно использовать лексически, написав мой $ _ . Заставить $ _ ссылаться на глобальный $ _ в той же области видимости стало возможно с помощью нашего $ _. Эта экспериментальная функция была удалена и теперь является фатальной ошибкой, но вы можете столкнуться с ней в старом коде.

Если она была удалена, Я считаю, что это большая проблема, как ...

Я думаю, что это не то место, чтобы обсуждать это, то есть обсуждения не решат вашу текущую проблему. Как указывалось в комментариях икегами: эта функция была отмечена как экспериментальная в 5.18 и, таким образом, приводила к предупреждениям в течение многих лет. И вам, вероятно, просто нужно заменить my $_ на local $_ в вашем коде.

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