"Дмитрий Леонов. Использование Perl в интернет-технологиях" - читать интересную книгу автора

$a++;
}
$a = 1;
f();
print $a; # напечатает 2

Для того, чтобы сделать переменную локальной, надо объявить ее с
помощью оператора my:

sub f
{
my $a;
$a++;
}
$a = 1;
f();
print $a; # напечатает 1

Распространенным приемом является инициализация параметров функции,
имеющих осмысленные имена:
my($param1, $param2) = @_;

При наличии директивы use strict объявление переменных с помощью
операции my является обязательным.
Кроме директивы my существует похожая на нее директива local. Разница
между ними следующая: my ограничивает область действия переменной текущим
блоком, local же делает эту переменную доступной и во всех функциях, которые
вызываются из текущего блока.
Теперь, научившись работать с функциями, мы можем использовать
сортировку с произвольным критерием.
sub by_num
{
return $a => $b;
}
foreach $i(sort by_num keys %a)
{
print $a{$i}."\n";
}

Функция by_num определяет критерий сортировки, а переменные $a и $b,
передаваемые в нее, являются встроенными и локальными для нее переменными.
То же самое можно записать еще короче, используя анонимную функцию:


foreach $i(sort {$a => $b} keys %a)
{
print $a{$i}."\n";
}

Можно создать ссылку на функцию: