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.