in reply to Sorting multiple arrays

Use an array slice:
my @sorted_a = @array_a[sort { $array_b[$a] <=> $array_b[$b] } 0..$#ar +ray_b];

-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.

Replies are listed 'Best First'.
Re^2: Sorting multiple arrays
by Codon (Friar) on Sep 13, 2005 at 15:49 UTC
    This doesn't sort @array_b. The OP could then just numeric sort @array_b in a separate operation.

    Ivan Heffner
    Sr. Software Engineer, DAS Lead
    WhitePages.com, Inc.
      Maybe I skimmed too fast, but I thought the sorting of array_b was only a logical sort to show how array_a needed to be reordered.

      If that's not the case, saving the indicies and using them twice would do the trick:

      my @indicies = sort { $array_b[$a] <=> $array_b[$b] } 0..$#array_b; my @sorted_a = @array_a[@indicies]; my @sorted_b = @array_b[@indicies];

      -- Randal L. Schwartz, Perl hacker
      Be sure to read my standard disclaimer if this is a reply.