in reply to Back to Remedial Perl for Me: map{} function

I've been trying to grok the perlfunc:map function too-- and this was encouragement to dig deeper, so I decided to play with it. I tried rewriting it using lower-level functions. I came up with the following, which in all the minimal testing I did seemed to reproduce the results of map. I even used a $function which was more complex and returned multiple elements for some items in the original list. This helped me get a way of thinking about the command (and hopefully it's a good way to think about it), so I thought I'd share.
use strict; my @start_list = (qw/ one two three four five six /); my $function = sub { uc }; my @end_list = fake_map( $function, @start_list ); #equivalent to @end_list = map { &$function } @start_list; my %end_hash = fake_map( $function, @start_list ); #equivalent to %end_hash = map { &$function } @start_list; print (join (' ', @end_list, "\n") ); foreach (keys %end_hash) { print "hash{'$_'} = $end_hash{$_}\n"; } sub fake_map { my $func = shift; my @instack = @_; my @outstack = (); foreach (@instack) { push (@outstack, &$func); } return @outstack; }