I'm looking for a better way to compare two hashes (or hash of hashes), possibly via map or grep, however I can seem to wrap my head something that doesn't use a for loop. This is the current method I'm using:

First compare each hash key, by key. If the keys are the same then compare the values. Then print out either matching or mismatching.

If you really want all the printing, I would not recommend map or grep. If you only need to know whether or not the hashes match, you could use grep. However the logic is much clearer if you use a grep-like function from the module List::MoreUtils.