http://qs1969.pair.com?node_id=496028


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,
Zaxo