Yes. Assuming you want to keep the overkill of a function, you could either change the relevant line to:
sub f{ return $_ + 1 };
or pass the $_ as an argument to the function:
use strict; use warnings;
sub f{ return $_[0] + 1 };
my @a = (1, 2, 3);
print join " ", map (f($_), @a);
I have added the join because you like functional programming. But the more common way to do such things is illustrated in the following Perl one-liner:
$ perl -e 'print join " ", map {$_ + 1} 1..4'
2 3 4 5
Talking of functional programming, note that the block of code after the map (the {$_ + 1} part) can be regarded as an anonymous function being applied by map onto each input element.
|