That was my original thought, and then I saw Use of uninitialized value $self in concatenation (.) or string That's why I think my $self = shift or confess '$self undef'; is probably the best bet. I should point out that the $self that is uninitialized may not be the $self in the grotesque expression above.
#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.
Comment on Re^3: how to call a sub via variable in library