{ my $dad= My::Parent->new( name => 'Sr' ); warn "\$dad=$dad\n"; my $son= My::Child->new( $dad, name => 'Jr' ); warn "\$dad=$dad -> \$son=$son\n"; $dad= My::Parent->new( name => 'Newt' ); warn "\$dad=$dad; Sr -> \$son=$son\n"; warn "Sr no longer referenced, but not destroyed yet.\n"; $dad->Adopt( $son ); warn "\$dad=$dad -> \$son=$son; (Sr destroyed)\n"; My::Child->new( $dad, name => 'Young' ); warn "Young never really referenced, but not destroyed yet.\n"; warn "\$dad=$dad -> Young; \$son=$son\n"; $dad= My::Parent->new( name => 'Fin' ); warn "\$dad=$dad; \$son=$son (Newt -> Young destroyed)\n"; warn "Rest to be destroyed next.\n"; } warn "Everything destroyed above.\n";