map - apply a change to a list to get back a new list with the changes
map BLOCK LIST
map EXPR,LIST
Evaluates the
BLOCK or
EXPR for each element of
LIST (locally setting
$_ to each element) and returns the list value composed of the
results of each such evaluation. In scalar context, returns the
total number of elements so generated. Evaluates
BLOCK or
EXPR in
list context, so each element of
LIST may produce zero, one, or
more elements in the returned value.
@chars = map(chr, @nums);
translates a list of numbers to the corresponding characters. And
%hash = map { getkey($_) => $_ } @array;
is just a funny way to write
%hash = ();
foreach $_ (@array) {
$hash{getkey($_)} = $_;
}
Note that, because $_ is a reference into the list value, it can
be used to modify the elements of the array. While this is useful and
supported, it can cause bizarre results if the
LIST is not a named array.
Using a regular foreach loop for this purpose would be clearer in
most cases. See also grep in the perlfunc manpage for an array composed of those items of
the original list for which the
BLOCK or
EXPR evaluates to true.