in reply to Confused by use base, I think.

What do you get when you do warn(ref($self)."\n"); right before the line that gives the error?

And what's the output of the debugging code you have there but commented out?