in reply to on the fly methods

Class::Prototyped is probably a good option for this. It allows you to:
use Class::Prototyped; my $p = Class::Prototyped->new(); $p->reflect->addSlot( sub1 => sub { print "this is sub1" } ); $p->sub1 # prints "this is sub1";
It also provides a whole lot of other dynamic inheritance options if you want to build entire class hierarchies on the fly.