my @sortednames= sort {$geneP{$a}{minP}+0.0 < $geneP{$b}{minP}+0.0} keys(%geneP); foreach my $name (@sortednames){ print $geneP{$name}{minP},"\t$name\n"; } #### 1 1420849_at 0.372 1431131_s_at 0.237 1435591_at 0.225 1459151_x_at 0.177 1417466_at 0.0915 1449901_a_at 0.0356 1425027_s_at 0.0845 1455675_a_at 0.0881 1423452_at 0.0729 1435719_at