boerni has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks
I have a sorting question:
This Code behaves strangely:
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;
prints:
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' ];

As you can see, the sorted values are not consistent. What do I miss?
Thank you in advance

Replies are listed 'Best First'.
Re: Sorting Question
by LanX (Saint) on Nov 13, 2018 at 17:44 UTC
    you are sorting keys - which are strings - numerically?

    wait got it, you are comparing the values which are always 1.

    for my $k (@vals) { $hsh->{$k} = 1; }

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

      Doh! Thanks Rolf!!!!