in reply to Re: (CLPM) reorder via swap
in thread (CLPM) reorder via swap

Assuming we want to return a list in the ordered fashion:
sub reorder { #234567890123456 @{+pop}[@{+pop}] }
I'm taking an array slice instead of using map(). And we can get even shorter if we call it as reorder(@elements, \@neworder):
sub reorder { #2345678901 @_[@{+pop}] }
_____________________________________________________
Jeff japhy Pinyan, P.L., P.M., P.O.D, X.S.: Perl, regex, and perl hacker
How can we ever be the sold short or the cheated, we who for every service have long ago been overpaid? ~~ Meister Eckhart

Replies are listed 'Best First'.
Re^3: (CLPM) reorder via swap
by o0lit3 (Friar) on Aug 18, 2004 at 14:54 UTC

    Beautiful and elegant... it's simplicity like this that always reminds me why I love this language.

    But please help me out a little. What is the + operator doing here? I know that @{+pop} is somehow saying the same as @{pop()}, but I'm not sure why. ...And while I'm on the subject, why am I not allowed to simply say @{pop} (besides the fact that I've used a split infinitve)?

      When you say @{bareword}, Perl doesn't do anything to the bareword, and thinks you're just enclosing the variable name in braces. The reason this is useful is when you're printing something like "the ${n}th time", where you want $n, not $nth.

      The + here disambiguates things; it tells Perl that this is not just a "roped-off" variable name, it's an expression to be evaluated.

      _____________________________________________________
      Jeff japhy Pinyan, P.L., P.M., P.O.D, X.S.: Perl, regex, and perl hacker
      How can we ever be the sold short or the cheated, we who for every service have long ago been overpaid? ~~ Meister Eckhart