Perl старается как можно меньше ограничивать программиста. Но иногда бывает желательно установить более жесткие дисциплинарные рамки; эта задача решается при помощи директивы use strict. Директива представляет собой инструкцию для компилятора, которая содержит какую-либо информацию о коде. В данном случае директива use strict сообщает внутреннему компилятору Perl, что он должен установить более жесткие требования к программированию оставшейся части блока или исходного файла.
Почему это может быть важно? Представьте, что при написании программы вы ввели команду следующего вида:
$bamm_bamm = 3; # Perl создает переменную автоматически
Затем вы продолжаете набирать программу. Введенная команда уходит за верхний край экрана, а вы вводите команду увеличения переменной:
$bammbamm += 1; # Неверное имя!
Обнаружив новое имя переменной (символ подчеркивания учитывается в именах переменных!), Perl создает новую переменную и увеличивает ее на 1. Если вам повезет и вы достаточно умны для того, чтобы включить предупреждения, Perl сообщит, что одно (или оба) из этих глобальных имен используется в программе всего один раз. А если просто умны, окажется, что имена используются многократно, и Perl не сможет вас предупредить.
Чтобы Perl применял более жесткие ограничения, включите директиву use strict в начало программы (или любого блока или файла, в котором должны действовать эти правила):
use strict; # Enforce some good programming rules
Теперь, наряду с другими ограничениями, Perl будет требовать объявления всех новых переменных – обычно с ключевым словом my:
my $bamm_bamm = 3; # Новая лексическая переменная
Если теперь вы допустите ошибку в имени переменной, Perl пожалуется, что переменная с именем $bammbamm не объявлена в программе, а ваша ошибка будет автоматически обнаружена во время компиляции. $bammbamm += 1;
# Такой переменной не существует:
# Фатальная ошибка компиляции
Конечно, требования распространяются только на новые переменные; вам не придется объявлять встроенные переменные Perl, вроде $_ или @_.3 При включении use strict в уже написанную программу вы обычно получаете целый поток предупреждений, поэтому лучше использовать директиву сразу. Часто говорят, что любая программа длиной более одного экрана текста должна содержать use strict. И мы согласны с этим. В дальнейшем большинство наших примеров (хотя и не все) будет записываться так, как при действии use strict, даже если директива в программу не включается. В частности, мы обычно объявляем переменные с ключевым словом my там, где это уместно. Но даже несмотря на то, что в примерах книги директива use strict часто опускается, мы рекомендуем вам использовать ее в своих программах как можно чаще.