Почему Perl строго не предупреждает о необъявленном $ a? - PullRequest
5 голосов
/ 09 сентября 2010

Может кто-нибудь объяснить мне код ниже.Такое поведение некоторое время было таким (проверено на 5.8.5, 5.8.8, 5.10.1, 5.12.2), поэтому должна быть причина для этого?

$ perl -M5.012 -E '$aa=2'
Global symbol "$aa" requires explicit package name at -e line 1.

$ perl -M5.012 -E '$a=2'

Спасибо.

Ответы [ 2 ]

15 голосов
/ 09 сентября 2010

Это в строгой документации:

Из-за специального использования метода sort () переменные $ a и $ b освобождены от этой проверки.

Всегда проверяйте документы . Большинство ответов там:)

11 голосов
/ 09 сентября 2010

$a (а также $b и многие другие) является глобальной переменной.Он предназначен для использования в функции sort, например, sort { $a <=> $b } @list.perldoc perlvar перечисляет все встроенные глобалы perl и их значение.

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