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 }