Кажется, что use v5.14.0;
включает строгие или предупреждения;это правда?Если да, то как?
Документы для этого, к сожалению, похоронены в документации use
.
use VERSIONтакже лексически включает все функции, доступные в запрашиваемой версии, как определено прагмой функции, отключая любые функции, не входящие в комплект функций запрашиваемой версии.Смотрите функцию. Точно так же, если указанная версия Perl больше или равна 5.12.0, стриктуры включаются лексически как при использовании строгого. Любое явное использование использования строгого или без строгого переопределения использует VERSION, даже если это предшествует этому.Дальнейшее использование use VERSION переопределит все поведение предыдущей версии VERSION, возможно, удалив строгую и функциональную возможность, добавленную с помощью использования VERSION.Использование VERSION не загружает файлы feature.pm или strict.pm.
И если да, то как я могу использовать слово, не имея префикса для каждой переменной soddingс $ my?
Вы можете загружать функции индивидуально с помощью use feature
.Так что use feature "say"
.Вы также можете загрузить пакет функций до 5.12.0 с помощью use v5.10
.
Но вы действительно, действительно, очень хотите строго придерживаться.Действительно действительно действительно.Явное объявление переменных с помощью my
дает вам две важные функции: защиту от опечаток и лексическую область видимости.Защита от опечаток очевидна, если вы наберете $receiver = 42
и позже print $reciever
, вы можете потратить много времени на расчесывание головы, пока не поймете, что у вас есть опечатка.Это более чем компенсирует время, потраченное на ввод my
.
Не менее важным является лексическое определение объема.Это означает, что переменная живет только внутри блока, в котором она объявлена.
use strict;
sub foo {
my $thing = 42;
}
print $thing; # error
Без my
переменные являются глобальными по умолчанию.Любой фрагмент кода в любом месте может в любое время коснуться глобальной переменной.Это делает все, кроме самых маленьких кусочков кода, более сложными и трудными для понимания и превращает их в NIGHTMARES для людей, которым необходимо поддерживать его позже.Вы также рискуете случайно использовать одну и ту же переменную для двух разных целей, особенно с общим именем, таким как $count
или $i
, таинственным образом перезаписывая значения друг друга.