{ # make $a and $b point to each other my($a, $b); $a = \$b; $b = \$a}; ***** { # make $a point to itself my $a; $a = \$a}; ***** sub new_node { my $self = shift; my $class = ref($self) || $self; my $node = {}; $node->{LEFT} = $node->{RIGHT} = $node; $node->{DATA} = [ @_ ]; return bless $node, $class}; ***** #!/usr/bin/perl package Subtle; sub new { my $test; $test = \$test; # Create a self-reference. warn "CREATING " . \$test; return bless \$test}; sub DESTROY { my $self = shift; warn "DESTROYING $self"}; package main; warn "starting program"; { my $a = Subtle->new; my $b = Subtle->new; $$a = 0; # Break this self-reference, but not the other. warn "leaving block"}; warn "just exited block"; warn "time to die..."; exit;