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