To call a function on each element in an array, and collect the results, use:
@results = map { my_func($_) } @array;For example:
@triple = map { 3 * $_ } @single;To call a function on each element of an array, but ignore the results:
foreach $iterator (@array) { some_func($iterator); }To call a function on each integer in a (small) range, you can use:
@results = map { some_func($_) } (5 .. 25);but you should be aware that the .. operator creates an array of all integers in the range. This can take a lot of memory for large ranges. Instead use:
@results = (); for ($i=5; $i < 500_005; $i++) { push(@results, some_func($i)); }This situation has been fixed in Perl5.005. Use of .. in a for loop will iterate over the range, without creating the entire range.
for my $i (5 .. 500_005) { push(@results, some_func($i)); }will not create a list of 500,000 integers.