in reply to Data structure examiner

The documentation for ref (for which my code is essentially a wrapper) mentions a possible return value of LVALUE. When does this happen?
An LVALUE is something that can be assigned to (ie can appear on the left hand side of =. An easy way to see it returned from ref is by...
my $str = "hello"; print ref \substr( $str, 0, 2 );

The docs also mention different behavior "If the referenced object has been blessed into a package". (I don't really have a question about this, other than that I don't understand it. Grokking object-oriented Perl is my next quest.)
Compare the output from these two print statements
print ref {}; print ref bless {}, "MyObject";

How can I create a circular reference? If I do, is there a sane way to represent it?
See what Data::Dumper does with circular references? DD is usually quite sensible.
Is there a sexier way to handle code references? In particular, can I get it to print the name of the subroutine (if there is one)?
You could look at B::Deparse, which will decompile a coderef.

Update: I don't think you can get the sub's name, though

Is there a way I can use the debugger to stop at a certain point and execute my code (if, say I prefer to use it over the debugger's x command)?
Yes. If you start the program running under the debugger, $DB::single = 1 will force entry into the debugger. You can then execute any Perl code you like. (It might be DB::Single, but I'm fairly sure it's lowercase 's'.)

update: fixed a couple of typos & added deparse disclaimer