Hash::Merge merges two arbitrarily deep hashes into a single hash. That
is, at any level, it will add non-conflicting key-value pairs from one
hash to the other, and follows a set of specific rules when there are key
value conflicts (as outlined below). The hash is followed recursively,
so that deeply nested hashes that are at the same level will be merged
when the parent hashes are merged. Please note that self-referencing
hashes, or recursive references, are not handled well by this method.
Values in hashes are considered to be either ARRAY references,
HASH references, or otherwise are treated as SCALARs. By default, the
data passed to the merge function will be cloned using the Clone module;
however, if necessary, this behavior can be changed to use as many of
the original values as possible. (See set_clone_behavior).