use strict; my $f; ($f = {})->{foo} = 'bar'; my %new; %new = %{undef()}; # not okay #### $\ = $/; $h = ''; ${''}{foo} = 'bar'; print "\$h->{foo}: ", $h->{foo}; print "\$h: '", $h, "'"; print *{''}{HASH}; print *{$h}{HASH}; $h = undef; print *{$h}{HASH}; __END__ $h->{foo}: bar $h: '' HASH(0x885d7a4) HASH(0x885d7a4) Can't use an undefined value as a symbol reference at - line 11. #### ${''}{foo} = 'bar'; $h = ''; %new = %{$h}; print "$_ => $new{$_}\n" for keys %new; __END__ foo => bar