splinky has got me doing it now... To pick a nit:
Map works on all types of lists, not just those returned
by the <> operators. In addition, $_ is a symbolic
reference (see perlref), which gives map yet another
use, and makes one of your examples a bit confusing.
Consider:
my @array = <FILE>;
my @newarray = map { s/\#.*$//; $_ } @array;
Now @newarray and @array contain the same thing, as the s/// operator alters the contents of @array! Far better
to write:
my @array = <FILE>;
map s/\#.*$//, @array;
This way of doing things is deliberate, as it eliminates
unnecessary assignments when you want the results to
go back to the same array. The <FILE> thing is
special, as perl copies the file to a temporary, anonymous,
array for use while processing, so you never see that
it gets altered.
Andrew.