use Hash::Merge qw{ merge }; my $behavior = Hash::Merge::get_behavior_spec('STORAGE_PRECEDENT'); $behavior->{SCALAR}{SCALAR} = sub { $_[0] + $_[1] }; Hash::Merge::add_behavior_spec($behavior); %parent = %{ merge(\%parent, \%returned) }; print Dumper \%parent;