in reply to OOP - redefining a class

$page = A:B:C->new(); $page->check_if_i_should_be_a_subclass_instead(); $page->render(); # render method from A:B:C or A:B:C:D1 based on ab +ove method result

This makes me think that what you might want is to separate out the rendering stuff into separate classes and then create your A::B::C object, passing in an appropriate rendering object.

my $renderer = Renderer::D->new; my $page = A::B::C->new( renderer => $renderer );