I disagree; I think that answer merely hopes for a solution instead of answering the question directly.
use Test::More tests => 2;
sub undef_hash
{
my $ref = shift;
undef $ref;
}
sub assign_hash
{
my $ref = shift;
%$ref = ();
}
my $hash_one = { qw( foo bar baz quux ) };
undef_hash( $hash_one );
is( keys %$hash_one, 2,
'undef on hash reference should not clear it' );
my $hash_two = { qw( foo bar baz quux ) };
assign_hash( $hash_two );
is( keys %$hash_two, 0,
'assigning empty list to hash reference should clear it' );
Update: Ahh, I misunderstood. Yes, replacing the subcall will probably work.