Симптом: $c="foo";
выдает ошибку, а $b="foo";
нет.
Мой сценарий состоит буквально из 3 строк. Следующее не выдает ошибок или предупрежденийuse strict;
$b = "foo";
print $b;
но если изменить следующее, я получаю сообщение об ошибке "требуется явное имя пакета".use strict;
$c = "foo";
print $c;
,
Я понимаю, что use strict;
требует объявления переменных перед использованием, и изменение $c = "foo";
на my $c = "foo";
действительно предотвращает ошибку, но само по себе это не объясняет несоответствие.
Может ли кто-нибудь пролить свет здесь? Я уверен, что упускаю что-то очевидное. Я использую Strawberry Perl v5.16.3 в Windows 7 x64. Я редактирую в npp и выполняю свои скрипты из командной строки, через c:\strawberry> perl test.pl
sort
вы никогда не должны использовать$a
и$b
в своем коде в целом, даже не принимая во внимание обнаруженную вами разницу в поведении. - person DVK   schedule 16.07.2013