Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: Is it possible to "fix a seed" for hash?

by haukex (Archbishop)
on Mar 16, 2021 at 14:57 UTC ( #11129764=note: print w/replies, xml ) Need Help??


in reply to Is it possible to "fix a seed" for hash?

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).

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11129764]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (4)
As of 2022-09-29 12:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I prefer my indexes to start at:




    Results (125 votes). Check out past polls.

    Notices?