package Tie::Hash::DefaultVal; require Tie::Hash; @ISA = qw[Tie::ExtraHash]; sub TIEHASH { my ($pkg, $default) = @_; bless [ {}, $default ], $pkg; } sub FETCH { my ($self, $key) = @_; exists $self->[0]{$key} ? $self->[0]{$key} : $self->[1]; }