Is it possible to set fixed hash behavior: getting the same order of keys (or values, or each)?

IMHO, 99.9% of the time, this is an XY Problem. Maybe something like 80% of the time, the correct answers are "sort the keys of the hash on output", "use an array", or less often, "use a module like Tie::IxHash". See also the FAQ How do I sort a hash (optionally by value instead of key)? and the following question.

Even if you set PERL_HASH_SEED and the related variables, Perl makes no guarantees that this will stay stable across Perl versions. Hashes are always unordered.

How scripts, output of which depend on hashes, are tested?

By sorting the keys of the hash on output (see also Data::Dumper's Sortkeys, Data::Dump, most JSON modules have the canonical option, etc.), or if testing the contents of the hash directly, comparison functions like is_deeply from Test::More or Compare from Data::Compare don't care about hash order (since there is none).


In reply to Re: Is it possible to "fix a seed" for hash? by haukex
in thread Is it possible to "fix a seed" for hash? by rsFalse

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.