in reply to Re^2: Sorting Index of An Array
in thread Sorting Index of An Array

Just a nit - while your approach is far better than mine and less convoluted, there's no OR and no cache, so there's no Orcish (or-cache) Maneuver. That would be (from Shlomo Yona's Perl lectures 2002):

The Orcish Maneuver -- example

keys my %or_cache = @in; @out = sort { ($or_cache{$a} ||= KEY($a)) cmp ($or_cache{$b} ||= KEY($b)) } @in;

The first part of the sortsub sees if the sortkey for $a is cached.

If not, it extracts the value of the sortkey from the operand and caches it.

The sortkey for $a is then compared to the sortkey for $b.

Anyways, salva++ for simplifying things :-)

--shmem

_($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                              /\_¯/(q    /
----------------------------  \__(m.====·.(_("always off the crowd"))."·
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}