in reply to Variable Name Mistery. Who calls?

If you take ikegami's idea one more step. You can enforce the variable name and save a little typing. However you get odd syntax.
{ package Foo; sub new { my ($class, $id) = @_; my $self = { id => $id }; my ($package) = caller; ${$callpkg."::".$id} = bless $self, $class; undef; } sub method { my ($self, $name) = @_; print $self->{id}, "\n"; } } Foo->new('one'); Foo->new('second'); $one->method; $second->method;
This does not have the same syntax, but does get you the same result with about the same number of words. And you get pretty good error detection.
-- gam3
A picture is worth a thousand words, but takes 200K.