http://qs1969.pair.com?node_id=11129764


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