use warnings;
use strict;
my @total;
$total[1][1] = 123;
$total[2][1] = 345;
$total[3][1] = 222;
# hash of arrays: hash{ number } = [ i, j ]
my %hash;
for my $i ( 1 .. $#total ) {
for my $j ( 1 .. $#{$total[$i]} ) {
$hash{ $total[$i][$j] } = [ $i, $j ];
}
}
my @rank;
my $ranking = 0;
foreach my $value ( sort keys %hash ){
my ( $i, $j ) = @{$hash{ $value }};
$rank[$i][$j] = ++$ranking;
}
for my $i ( 1 .. $#rank ) {
for my $j ( 1 .. $#{$rank[$i]} ) {
print "rank[$i][$j] is $rank[$i][$j]\n";
}
}
####
rank[1][1] is 1
rank[2][1] is 3
rank[3][1] is 2
####
use warnings;
use strict;
my @total;
$total[1][1] = 123;
$total[2][1] = 345;
$total[3][1] = 222;
$total[4][1] = 222;
# hash of arrays: hash{ number } = [ i, j ]
my %hash;
for my $i ( 1 .. $#total ) {
for my $j ( 1 .. $#{$total[$i]} ) {
push @{$hash{ $total[$i][$j] }}, $i, $j;
}
}
my @rank;
my $ranking = 0;
foreach my $value ( sort keys %hash ){
++$ranking;
while ( my ($i, $j ) = splice @{$hash{ $value }}, 0, 2 ){
$rank[$i][$j] = $ranking;
}
}
for my $i ( 1 .. $#rank ) {
for my $j ( 1 .. $#{$rank[$i]} ) {
print "rank[$i][$j] is $rank[$i][$j]\n";
}
}
####
rank[1][1] is 1
rank[2][1] is 3
rank[3][1] is 2
rank[4][1] is 2