in reply to How to test equality of hashes?

Unfortunately, when you evaluate a hash in a scalar context it returns a fraction representing the hash table bucket usage, which is rarely what anyone is interested in. It doesn't even return the number of elements.

If you want to compare the contents of two hashes, you'll have to look at the keys and values of both. One way to compare them:

my @k1 = keys(%hash1); my @k2 = keys(%hash2); # do they have the same number of elements? if (@k1 != @k2) { # they're different... } # are the keys the same? if (join($; , sort(@k1)) ne join($; , sort(@k2))) { #they're different } # are the values the same? if (join($; , @hash1{@k1}) ne join($; , @hash2{@k1})) { #they're different }

All of this assumes that neither your keys nor values contain the $; character (by default \034)