use strict;
use warnings;
use Data::Dumper;
my %rankBased = (
q{191} => {
test1 => { score => 9.18 },
test2 => { score => 2.84 },
test3 => { score => 15.62 },
test4 => { score => 11.84 },
},
q{190} => {
test1 => { score => 13.28 },
test2 => { score => -47.56 },
test3 => { score => 18.50 },
test4 => { score => 14.88 },
},
);
my %sortedByRank;
foreach my $key ( keys %rankBased )
{
$sortedByRank{ $key } = [
map { { $_ => { score => $rankBased{ $key }->{ $_ }->{ score } } } }
sort {
$rankBased{ $key }->{ $b }->{ score }
<=>
$rankBased{ $key }->{ $a }->{ score }
} keys %{ $rankBased{ $key } }
];
}
print Data::Dumper->Dumpxs( [ \ %sortedByRank ], [ qw{ *sortedByRank } ] );
####
%sortedByRank = (
'191' => [
{
'test3' => {
'score' => '15.62'
}
},
{
'test4' => {
'score' => '11.84'
}
},
{
'test1' => {
'score' => '9.18'
}
},
{
'test2' => {
'score' => '2.84'
}
}
],
'190' => [
{
'test3' => {
'score' => '18.5'
}
},
{
'test4' => {
'score' => '14.88'
}
},
{
'test1' => {
'score' => '13.28'
}
},
{
'test2' => {
'score' => '-47.56'
}
}
]
);
##
##
map { { $_ => { %{ $rankBased{ $key }->{ $_ } } } } }