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


in reply to sorting array of array references with multiple dereferenced array elements

First of all, your code sample is incorrect.

Second, if after sorting you are going to get only 1 field from 1 array, then it does not make any sense to sort whole array. Just go through all lines and compare the fields your need with "limit". For example, if you need to find smallest (alphabetically) value of field 0 in list of references to array, then you can use following code

my $limit = $array[0][0]; for(my $i = 1; $i <= $#array; $i++) { my $chk = $array[$i][0]; $limit = $chk if($chk lt $limit); } print "Smallest ID is $limit\n";

If you need to get "smallest" value from field 1, then the following code can be used

my $limit = $array[0]; for(my $i = 1; $i <= $#array; $i++) { my $chk = $array[$i]; $limit = $chk if($chk->[0] lt $limit->[0] || ($chk->[0] eq $limit->[0] && $chk->[1] lt $limit->[1])); } print "Smallest is $limit->[1]\n";