Для применения переменных доступных только внутри блока или подпрограммы
необходимо определить их с помощью функции my(список).
Если переменная одна, то скобки можно опустить.
my() декларирует private переменные в пределах текущей подпрограммы, блока, функции eval() или do/require/use файлов. Private переменные аналогичны auto переменным в С.
Пример:
# Программа вычисления факториала. print fact(3); # вычислить факториал 3*2*1 sub fact # Определяем подпрограмму. { my $m; # private переменная но не local ! $m = $_[0]; return 1 if $m <= 1; return($m * fact($m -1)); }
Можно указывать начальные значения private переменных как:
- my(список) = выражение;
- my($m) = $_[0];