use strict;
use warnings;
sub clean {
my $ref = shift;
if ('HASH' eq ref $ref) {
clean ($ref->{$_}), $ref->{$_} = undef for keys %$ref;
} elsif ('ARRAY' eq ref $ref) {
clean ($_), $_ = undef for @$ref;
}
}
my $hashvar = {
emp => {},
hemp =>
{splay => {}, hay => {go => 1, ho => {},}, tay => [], may => ['way'],},
};
clean ($hashvar);
$hashvar = undef;
####
use strict;
use warnings;
use Data::Dump::Streamer;
sub clean {
my $ref = $_[0];
if ('HASH' eq ref $ref) {
clean ($ref->{$_}) and delete $ref->{$_} for keys %$ref;
return ! keys %$ref;
} elsif ('ARRAY' eq ref $ref) {
clean ($ref->[$_]) and delete $ref->[$_] for reverse 0 .. $#$ref;
return ! @$ref;
} else {
return ! defined $ref;
}
}
my $hashvar = {
emp => {},
hemp =>
{splay => {}, hay => {go => 1, ho => {},}, tay => [], may => ['way'],},
};
clean ($hashvar);
Dump ($hashvar);
####
$HASH1 = { hemp => {
hay => { go => 1 },
may => [ 'way' ]
} };