in reply to Re: random behaviour of perl hashes
in thread random behaviour of perl hashes

As lima1 pointed out this behaviour has been deliberately changed as of the perl 5.8.*, I get this with 5.8.1:

[jonathan@orpheus jonathan]$ perl foo.pl potatos diced pepper fresh salt shaken paprika spicy onions diced [jonathan@orpheus jonathan]$ perl foo.pl pepper fresh potatos diced onions diced paprika spicy salt shaken [jonathan@orpheus jonathan]$ perl foo.pl salt shaken paprika spicy onions diced potatos diced pepper fresh
but yes it would be a mistake to rely on an any hash ordering behaviour in a programme.

/J\

Replies are listed 'Best First'.
Re^3: random behaviour of perl hashes
by swampyankee (Parson) on Aug 28, 2006 at 20:48 UTC

    I get this running ActiveState's 5.8.8 (build 817):

    Case 1 salt shaken onions diced pepper fresh paprika spicy potatos diced Case 2 salt shaken onions diced pepper fresh paprika spicy potatos diced Case 3 salt shaken onions diced pepper fresh paprika spicy potatos diced

    I suspect that it has to do with the details of the implementation of the hashing algorithm, which may differ from system to system.

    My interpretation of the "random ordering" in the perldocs is simply that "we refuse to guarantee the order of the keys for a hash".

    emc

    Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.

    Albert Einstein
      According to "perlrun":

      The default behaviour is to randomise unless the PERL_HASH_SEED is set. If Perl has been compiled with "-DUSE_HASH_SEED_EXPLICIT", the default behaviour is not to randomise unless the PERL_HASH_SEED is set.

      perhaps ActiveState Perl is compiled with -DUSE_HASH_SEED_EXPLICIT ?

      perl -V
      might tell you whether that is the case.

      Liz

        perl -v returns (among many other data):

        -GF -W3 -MD -Zi
        -DNDEBUG -O1 -DWIN32
        -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT
        -DNO_HASH_SEED
        -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT
        -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX

        It would seem not, unless -DNO_HASH_SEED has a similar effect.

        emc

        Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.

        Albert Einstein