my $ar = []; push @{$ar}, $ar; # $ar can only be destroyed manually. #### use Scalar::Util qw( weaken is_weak ); my $ar = []; push @{ $ar }, weaken $ar; # $ar will be destroyed normally. if ( is_weak $ar->[0] ) { print "First list item is weak\n"; } my $copy = $ar->[0]; if ( ! is_weak $copy ) { print "copy is not weak\n"; }