in reply to [Solved] How does map work?

$_ does not belong to @_, you have to set this global variable explicitly and not pass it.

Eg by changing while to for (another bug in your code btw is to think that while automatically sets $_)

Im pretty sure HOP already shows how to emulate map! Sorry no code am typing on my mobile... :-)

Cheers Rolf

( addicted to the Perl Programming Language)

Replies are listed 'Best First'.
Re^2: How does map work?
by three18ti (Monk) on Oct 26, 2013 at 20:36 UTC

    thanks for the assist. Indeed my use of while was incorrect

    Indeed HOP does doe a version of map that takes an iterator, and I'm sure it will just take plugging away at HOP some more, it starts to make sense after a few read throughs...

      Hmm seems like HOP doesn't show how to reimplement plain map.

      But as a side note, perlsub has an example for grep :

      And here’s a reimplementation of the Perl "grep" operator: sub mygrep (&@) { my $code = shift; my @result; foreach $_ (@_) { push(@result, $_) if &$code; } @result; }

      HTH!

      Cheers Rolf

      ( addicted to the Perl Programming Language)

      There is one instance where while sets $_ (or at the very least has the appearance to do so), and that's in the special while( <$filehandle> ) {...} construction (or ... while <$filehandle> for that matter, I believe).