$VAR1 = { '191' => { 'test1' => { 'score' => '9.18' }, 'test2' => { 'score' => '2.84' }, 'test3' => { 'score' => '15.62' }, 'test4' => { 'score' => '11.84' }, '190' => { 'test1'=> { 'score' => '13.28' }, 'test2' => { 'score' => '-47.56' }, 'test3' => { 'score' => '18.50' }, 'test4' => { 'score' => '14.88' } } } #### $VAR1 = { '191' => {'test3' => { 'score' => '15.62' }, 'test4' => { 'score' => '11.84' } 'test1' => { 'score' => '9.18' }, 'test2' => { 'score' => '2.84' }, ​ '190' => { 'test3' => { 'score' => '18.50' }, 'test4' => { 'score' => '14.88' } 'test1'=> {'score' => '13.28' }, 'test2' => { 'score' => '-47.56' } } } #### my @sort_by_rank; for my $key1 (keys %rankBased) { for my $key2 (keys %{$rankBased{$key1}}) { @sort_by_rank = sort{ $rankBased{$b}{$key2}{score} <=> $rankBased{$a}{$key2}{score} } keys %rankBased; } }