Perl has a "leak" with circular references. I sort of
boggled at your code for a while since it is rather, *ahem*
pathological, but in the end I don't think you made a circular
construct. You just made a really deep set of nested
hashes. I think the whole thing can unwind from the top.
The reference you destroy is the lynchpin and once it is pulled
each remaining level can fall one by one.
# These are bad, um-kay?
$a = \$a;
($b, $c) = \($c, $b);
$d[$_]=\$d[$_-1] for (1..100_000);
$you = new YOU;
honk() if $you->love(perl)