Jeff Westman wrote:
> Hi,
> 
> I need to do a sort on a couple of column ranges.
> 
> I want to be able to do a primary sort, on say, columns 21-25 and
> then a secondary sort on columns 40-49.
> 
> Any ideas on how to approach this?

Assuming you're numbering columns from 1:

   @rows = sort { substr($a, 20, 5) cmp substr($b, 20, 5)
                  || substr($a, 49, 10) cmp substr($b, 49, 10) } @rows;

If you're numbering columns from 0, adjust the offsets above.

The general concept for multi key sorting is to combine the comparisons with
a logical "or" operation.

John Krahn gave you a sort of modified "Schwartzian Transform" (did I spell
that right?) approach which is faster if you have a large number of rows to
process, but a bit less clear...

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to