in reply to Hash ordering

Not only is the order of hash keys random by nature, Perl 5.8.1 introduced changes to ensure that a given hash's keys would come up in a different order on each run of the program for security reasons:
Mainly due to security reasons, the "random ordering" of hashes has been made even more random. Previously while the order of hash elements from keys(), values(), and each() was essentially random, it was still repeatable. Now, however, the order varies between different runs of Perl.

Perl has never guaranteed any ordering of the hash keys, and the ordering has already changed several times during the lifetime of Perl 5. Also, the ordering of hash keys has always been, and continues to be, affected by the insertion order.

- Perl 5.8.1-RC4 release notes, emphasis in original

Replies are listed 'Best First'.
Re^2: Hash ordering
by haukex (Archbishop) on Apr 14, 2020 at 10:29 UTC
    Perl 5.8.1 introduced changes to ensure that a given hash's keys would come up in a different order on each run of the program

    In addition, in 5.18 further changes were made. From Hash overhaul:

    By default, two distinct hash variables with identical keys and values may now provide their contents in a different order where it was previously identical. ... the order which keys/values will be returned from functions like keys(), values(), and each() will differ from run to run. ... Further, every hash has its own iteration order, which should make it much more difficult to determine what the current hash seed is.