$totalscoreinv{$key1}{key2}= $totalscore; foreach $keyscore (keys %totalscoreinv){ print OUT "\n\nFirst key:$keyscore\n"; foreach my $keyscore2 (sort by_score keys %{$totalscoreinv{$keyscore}}){ printf(OUT "%30s %s\n", "$keyscore2= ", "$totalscoreinv{$keyscore}{$keyscore2}"); } } sub by_score { $totalscoreinv{$keyscore}{$b}<=>$totalscoreinv{$keyscore}{$a}; } #### First key:700200 ----------------------------------------------------------- 523261= -509.711586526694 523237= -494.393864137596 523246= -438.024029240629 523424= -521.488541326437 523247= -470.547762535975