my %a = (foo => undef);
print "existed = ".(() = delete $a{foo})."\n";
print "notexisted = ".(() = delete $a{bar})."\n";
__END__
existed = 1
notexisted = 1
####
my %a = (foo => 1, bar => 2, baz => 3);
$" = ',';
print "existed = @{[delete $a{foo}]}\n";
print "notexisted = @{[delete @a{qw(foo bar baz)}]}\n";
__END__
existed = 1
notexisted = ,2,3
##
##
use Devel::Size qw(size total_size);
$a{1} = undef;
$b{1} = 0;
$c{1} = 1;
$d{1} = 10;
$e{1} = 'abcd';
print "$_: ".(total_size( \%{$_} ) - size( \%{$_} ))."\n" for a..e;
__END__
a: 12
b: 16
c: 16
d: 16
e: 29