Локальные переменные в функциях.
При помощи операции my можно создавать локальные переменные
sub add { my($sum); $sum = 0; foreach $_ (@_) { $sum += $_; }
return $sum; }
sub bigger_than_100 { # создает список всех элементов массива > 100 my(@result); foreach $_ (@_) { if($_ > 100) { push(@result, $_); } } return @result; }
sub bigger_than { # создает список всех элементов массива > 100 my($n, @values); ($n, @values) = @_;
my($result); foreach $_ (@values) { if($_ > $n) { push(@result, $_); } } return @result; } @new = bigger_than(100, @list); @this = bigger_than(5, 1, 5, 15, 30); # @this содержит (15, 30)
Использовали две локальные переменные - это удобнее, чем указывать $_[0]
и @_[1..$#_].
Список, создаваемый my, можно использовать в правой части выражения:
my($n, @values) = @_;
my($sum) = 0;