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

