sub recursiveFree { my $ref = shift; if( ref $ref eq 'ARRAY' ) { recursiveFree( $ref->[ $_ ] ) for 0 .. $#{ $ref }; } elsif( ref $ref eq 'HASH' ) { recursiveFree( $ref->{ $_ } ) for keys %{ $ref }; } elsif( ref $ref and ref $ref ne 'SCALAR' ) { warn "Unhandled reftype: ", ref( $ref ); } undef $ref; return; } recursiveFree( $xls );