"Дмитрий Леонов. Использование 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. Разница блоком, 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"; } Можно создать ссылку на функцию: |
|
|