Если скалярная переменная содержит ссылку на код - например:
my $double = sub { 2 * shift };
Вы можете вызывать код так же, как в Python, например:
$double->(50); # Returns 100.
Применение этого к map
примеру:
my @doubles = map $double->($_), 1..10;
Или так:
my @doubles = map { $double->($_) } 1..10;
Второй вариант более устойчив, поскольку блок, определенный в скобках {}
, может содержатьлюбое количество операторов Perl:
my @doubles = map {
my $result = 2 * $_;
# Other computations, if needed.
$result; # The return of each call to the map block.
} 1..10;