Basset::Container::Hash

Basset::Container::Hash implements a layered hash. The easiest way to explain is with an example:

my %x = ('a' => 'b');

tie my %y, 'Basset::Container::Hash', \%x;	#<- %x is the parent of 'y'.

print $x{'a'};	#prints b
print $y{'a'}; #prints b (inherited from x)
$y{'a'} = 'foo';
$y{'z'} = 'bar';
print $x{'a'};	#prints b
print $y{'a'}; #prints foo (overriden in y)
print $x{'z'};	#prints undef (not defined in x
print $y{'z'}; #prints bar (overridden from x)
delete $y{'a'};
print $x{'a'};	#prints b
print $y{'a'}; #prints b (inherited from x)
$x{'b'} = 'c';
print $x{'b'};	#prints c
print $y{'b'}; #prints c (inherited from x)