perl -e 'use strict;use warnings;$a=2;print $a'
Похоже, что при объявлении глобальной переменной без our предупреждение не появляется, поэтому когда необходимо это ключевое слово?
our
$a и $b являются особыми случаями - они зарезервированы для sort (например, sort { $a <=> $b }) и не должны использоваться для собственных имен переменных - попробуйте еще раз, используя что-то еще, и посмотрите, что произойдет!
$a
$b
sort
sort { $a <=> $b }
С perlvar:
$a $b Special package variables when using "sort()", see "sort" in perlfunc. Because of this specialness $a and $b don't need to be declared (using "use vars", or "our()") even when using the "strict 'vars'" pragma.