use strict; my @totals = ([ 3, 4 ],[ 1, 2 ]); my %hash; for my $i (0..$#totals) { my $aref = $totals[$i]; for my $j (0..$#{$totals[$i]}) { $hash{"$i,$j"}=$totals[$i][$j]; } } my @sorted = sort { $hash{$a} <=> $hash{$b} } keys %hash; my @ranks; my $rank = 0; for (@sorted) { my ($i, $j) = split(/,/); $ranks[$i][$j] = ++$rank; } for my $i (0..@ranks) { for my $j (0..$#{$ranks[$i]}) { print "$i $j $ranks[$i][$j]\n"; } }