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.