use strict; use warnings; use Data::Dumper; my @vals = (5, 5.71428571428571); for (1 .. 10) { my $hsh; for my $k (@vals) { $hsh->{$k} = 1; } my @sorted = sort {$hsh->{$b} <=> $hsh->{$a}} keys %$hsh; print "$_: " . Dumper (\@sorted); } exit 0; #### 1: $VAR1 = [ '5.71428571428571', '5' ]; 2: $VAR1 = [ '5.71428571428571', '5' ]; 3: $VAR1 = [ '5.71428571428571', '5' ]; 4: $VAR1 = [ '5.71428571428571', '5' ]; 5: $VAR1 = [ '5', '5.71428571428571' ]; 6: $VAR1 = [ '5.71428571428571', '5' ]; 7: $VAR1 = [ '5', '5.71428571428571' ]; 8: $VAR1 = [ '5', '5.71428571428571' ]; 9: $VAR1 = [ '5', '5.71428571428571' ]; 10: $VAR1 = [ '5', '5.71428571428571' ];