use Scalar::Util qw(refaddr); my $newclass = q[ package $CLASS::FakeClass$OBJID; use base qw($CLASS); sub foo { my $self = shift; ... blah blah blah ... } ]; $newclass =~ s/\$CLASS/ref($object)/eg; $newclass =~ s/\$OBJID/refaddr($object}/eg; eval $newclass; bless $object, ref($object)."::FakeClass".refaddr($object);