Perl имеет лексические механизмы обзорного JS испытывает недостаток. Вы лучше просто заключая код, который вы хотите как-то в области видимости блока, например .:
{
my $localvar;
. . .
}
В этом случае $localvar
будет полностью невидимым вне этих скобок; то есть также и тот же механизм можно использовать для локализации встроенных переменных, таких как $/
:
{
local $/ = undef;
#reading from a file handle now consumes the entire file
}
#But not out here
(примечания стороны: никогда не заходило $/
глобально Это может привести к поломке вещей в тонких и ужасных способах, если вы забыли установить его обратно, когда. вы закончили, или если вы вызываете другой код перед его восстановлением.)
В perl наилучшей практикой является помещение вещей в субтитры, когда это имеет смысл; когда это не имеет смысла или излишне усложняет код, лексические блоки обеспечивают обзор; если вам нужны анонимные подпрограммы (как правило, для обратных вызовов или аналогичных), то вы можете сделать my $subref = sub { . . . };
или даже просто приклеить к югу заявления непосредственно в качестве аргумента функции: do_something(callback => sub { . . . });
Примечание: смотри также ysth's answer для ресурсов, связанных с преимущества в самоназывающие анонимные субтитры.