Я никогда не мог ясно понять использование local в perl, за исключением того, что что-либо определенное local внутри стека будет отличаться от других существующих моих переменных, и локальная переменная будет видна и в других подпрограммах.
С perldoc perlsub :
A local просто дает временные значения глобальным (то есть пакетным) переменным.Это не создает локальную переменную.Это известно как динамическое определение объема.Лексическая область видимости выполняется с помощью my, что больше похоже на автоматические объявления C.
local
my
local был средством, с помощью которого можно было уменьшить область видимости переменных до того, как my был введен в язык. В основном это используется только в ситуациях, когда лексические (my) переменные не могут быть использованы.