A related oddity is that map can modify its input, in addition to generating output. That leads to the pitfall of
my @new = map { s/foo/bar/; $_ } @old;
# @old is modified along with @new!
# should be my @new = map { s/foo/bar/; $_ } map {$_} @old;
If map couldn't modify its input, the whole "map in a void context" debate might never have happened.
for would be used for modifying input, map would be used for generating new output. Of course, it's a tradeoff,
giving up some liberty for safety.
Caution: Contents may have been coded under pressure.