Dave wrote: > Otherwise new() returns false and the original string is used instead. Technically what Perl interpreted the original string to be is used instead.
i.e. you wrote: return __PACKAGE__->new($_[0]) || $_[1] Not return __PACKAGE__->new($_[0]) || $_[0] Which is where some of the confusion is coming from, since you forgot to comment or explain what the heck $_[1] is ;-) Mark.