{ # 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;