C:\>splain C:\Perl\bin/splain.bat: Reading from STDIN Attempt to bless into a reference Attempt to bless into a reference (#1) (F) The CLASSNAME argument to the bless() operator is expected to be the name of the package to bless the resulting object into. You've supplied instead a reference to something: perhaps you wrote bless $self, $proto; when you intended bless $self, ref($proto) || $proto; If you actually want to bless into the stringified version of the reference supplied, you need to stringify it yourself, for example by: bless $self, "$proto";