in reply to Simple OO

Shouldn't you use
my $class = ref($proto) || $proto;
Doesn't ref{$proto} return 'HASH'?