NAME
Tie::UnionHash - Union hashes. Make changes to the last hash in arguments ( depend on option <freeze_keys>).
SYNOPSIS
use Tie::UnionHash;
tie %uhash, 'Tie::UnionHash', \%hash1ro, \%hash2rw;
tie %hashu, 'Tie::UnionHash', \%hash1, \%hash2, 'freeze_keys' ;
DESCRIPTION
Tie::UnionHash - Merge multiple hashes into a one hash. Make changes only to the last hash in arguments, unless used option freeze_keys.
Tie::UnionHash can handle anything that looks like a hash; just give it a reference as one of the additional arguments to tie(). This includes other tied hashes, so you can include DB and DBM files as data sources for a union hash. If given a plain name instead of a reference, it will use as option.
UnionHash correctly distinguish deleted keys.
my %hash1 = ( 1 => 1, 3 => 3 );
my %hash2 = ( 2 => 2, 3 => 3 );
my %hashu;
tie %hashu, 'Tie::UnionHash', \%hash1, \%hash2;
# keys %hashu is [ '1', '2', '3' ]
$hashu{3} = 4 #change %hash2;
delete $hashu{3} #change %hash2 and track deleted keys
exist $hashu{3} # false, but exists in read only hashes
Option freeze_keys will change mode to readonly keys in hashes, except last hash in arguments.
my %hash1 = ( 1 => 1, 3 => 3 );
my %hash2 = ( 2 => 2, 3 => 3 );
my %hashu;
tie %hashu, 'Tie::UnionHash', \%hash1, \%hash2, 'freeze_keys' ;
$hashu{3} = 4 #make changes to %hash1 : ( 1 => 1, 3 => 4 );
$hashu{NEW_KEY} = 1 # make changes to %hash2 :
#( 2 => 2, 3 => 3, NEW_KEY =>1 );;
SEE ALSO
Tie::StdHash
AUTHOR
Zahatski Aliaksandr, <zag@cpan.org>
COPYRIGHT AND LICENSE
Copyright (C) 2005-2007 by Zahatski Aliaksandr
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.