if ($reftype eq 'REF' || $reftype eq 'SCALAR') {
clean($$node);
$node = undef if !defined($$node);
} els
####
sub clean {
our $node; local *node = \$_[0]; # Alias
return if !defined($node);
my $reftype = ref($node);
return if !$reftype;
if ($reftype eq 'ARRAY') {
clean($_) for @$node;
@$node = grep defined, @$node;
$node = undef if !@$node;
} elsif ($reftype eq 'HASH') {
clean($_) for values(%$node);
delete @{$node}{ grep !defined($node->{$_}), keys(%$node) };
$node = undef if !keys(%$node);
}
}
####
[[[],[],["b"]],"a"]
[[["b"]],"a"]
[[[],[],[]],"a"]
["a"]
####
my $n = scalar(keys %$ref);
if ($n == 0) {
return 0;
}
return 1;
####
return keys(%$ref) ? 1 : 0;
####
return keys(%$ref);