$totalscoreinv{$key1}{key2}= $totalscore; foreach $keyscore (sort by_score keys %totalscoreinv){ print OUT "\n\n $keyscore\n"; foreach my $keyscore2 (keys %{$totalscoreinv{$keyscore}}){ printf(OUT "%30s %s\n", "$keyscore2= ", "$totalscoreinv{$keyscore}{$keyscore2}"); } } sub by_score { $totalscorepass{$keyscore}{$b}<=>$totalscorepass{$keyscore}{$a}; }