NAME

Hash::Util::Merge - utility functions for merging hashes

VERSION

version v0.3.0

SYNOPSIS

use Hash::Util::Merge qw/ mergemap /;

my %a = ( x => 1, y => 2 );
my %b = ( x => 3, y => 7 );

my $c = mergemap { $a + $b } \%a, \%b;

# %c = ( x => 4, y => 9 );

DESCRIPTION

This module provides some syntactic sugar for merging simple hashes with a function.

EXPORTS

None by default.

mergemap

$hashref = mergemap { fn($a,$b) } \%a, \%b, \%c ...;

This returns a hash reference whose values are the result of repeatedly applying a function to the values from all hashes, for each key.

The variables $a and $b refer to the value from the accumulator (initialised to the first hash in the list) and the remaining hashes.

For example,

my %a = ( x => 5, y => 6 );
my %b = ( x => 2, y => 1 );

my $c = mergemap { $a - $b } \%a, \%b;

Returns the hash reference

( x => 3, y => 5 );

If the hashes do not have the same set of keys, then $a or $b will be undef if the key is missing. (There is no means of differentiating between a key that exists vs an undef value.)

KNOWN ISSUES

Readonly hashes, or those with locked keys, may return an error when merged with a hash that has other keys.

SEE ALSO

Hash::Merge

SUPPORT

Only the latest version of this module will be supported.

This module requires Perl v5.14 or later.

Future releases may only support Perl versions released in the last ten years.

Reporting Bugs and Submitting Feature Requests

Please report any bugs or feature requests on the bugtracker website https://github.com/robrwo/Hash-Util-Merge/issues

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

If the bug you are reporting has security implications which make it inappropriate to send to a public issue tracker, then see SECURITY.md for instructions how to report security vulnerabilities.

SOURCE

The development version is on github at https://github.com/robrwo/Hash-Util-Merge and may be cloned from git://github.com/robrwo/Hash-Util-Merge.git

AUTHOR

Robert Rothenberg <rrwo@cpan.org>

This module uses code from List::Util::PP.

This module was developed from work for Science Photo Library https://www.sciencephoto.com.

CONTRIBUTOR

Mohammad S Anwar <mohammad.anwar@yahoo.com>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2020-2026 by Robert Rothenberg.

This is free software, licensed under:

The Artistic License 2.0 (GPL Compatible)