Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

Re: Creating a Slice through a 2 dimensional array

by Zaxo (Archbishop)
on Sep 29, 2005 at 09:52 UTC ( #496028=note: print w/replies, xml ) Need Help??

in reply to Creating a Slice through a 2 dimensional array

You don't need a slice if you're sorting the array reference members of @sortarr by a particular set of elements. Assuming numeric values, hence <=> comparisons,

@sortarr = sort { $a->[3] <=> $b->[3] } @sortarr;
If you want to sort on several columns, test in your desired order with logical-or between,
@sortarr = sort { $a->[6] <=> $b->[6] || $a->[7] <=> $b->[7] || $a->[8] <=> $b->[8] || $a->[9] <=> $b->[9] || $a->[10] <=> $b->[10] || $a->[11] <=> $b->[11]; } @sortarr;
Most of that is rarely executed because of the short circuit property of logical or. Looking up values by index is cheaper than copying out a 2-d slice sorting it and correlating the result to the original.

If you do ever need slicing and other ops on deep arrays, see the great PDL module.

After Compline,

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://496028]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (5)
As of 2023-01-30 17:47 GMT
Find Nodes?
    Voting Booth?

    No recent polls found