Scalar::Util 

use Scalar::Util qw(
    blessed dualvar isdual readonly refaddr reftype
    tainted weaken unweaken isweak isvstring
    looks_like_number set_prototype
);

my $thing1 = {};
my $thing2 = {};
$thing1->{child}  = $thing2;
$thing2->{parent} = $thing1;
weaken($thing2->{parent});