Perl - странное поведение при use strict.
Я столкнулся с интересной особенностью. Если я пытаюсь выполнить такой код
Код:
#!/usr/bin/perl -w
use strict;
$var = 'Hello';
print "$var\n";
use strict;
$var = 'Hello';
print "$var\n";
То Perl, как и положено при использовании use strict, вываливается с сообщением
Код:
Global symbol "$var" requires explicit package name at ./test.pl line 5.
Global symbol "$var" requires explicit package name at ./test.pl line 6.
Global symbol "$var" requires explicit package name at ./test.pl line 6.
т.е. не разрешает использовать переменные без явного указания области видимости. Но если, в качестве имени переменной использовать $a
Код:
#!/usr/bin/perl -w
use strict;
$a = 'Hello';
print "$a\n";
use strict;
$a = 'Hello';
print "$a\n";
то Perl выдает
Код:
Hello
В чем подвох? :) Тоже самое, если использовать переменную $b.
Версия Perl
Код:
root@web:/home/jb# uname -a
Linux web 2.4.31 #6 Sun Jun 5 19:04:47 PDT 2005 i686 unknown unknown GNU/Linux
root@web:/home/jb# perl -v
This is perl, v5.8.7 built for i486-linux
Linux web 2.4.31 #6 Sun Jun 5 19:04:47 PDT 2005 i686 unknown unknown GNU/Linux
root@web:/home/jb# perl -v
This is perl, v5.8.7 built for i486-linux
perldoc -f sort вам все объяснит :)
Понял, спасибо :)