{ package Null; use overload bool => sub { undef }, '""' => sub { undef }, '0+' => sub { undef }, fallback => 1, nomethod => 'AUTOLOAD'; sub AUTOLOAD { return; } } { package Foo; sub new { return bless { a => 'b' }, shift; } sub apple { 'pear' } } my %x = ( foo => Foo->new, ); my $y = $x{foo}; print "Y1: $y\n"; bless $x{foo}, 'Null'; %{$x{foo}} = (); print "Y2: $y\n"; my $z = $x{foo}; print "Z: $z\n";