package Cone::Head; our $VERSION= '1.001_001'; use Cone::Head::code qw< new objectNamespace >; package Cone::Head::Object; use Cone::Head::code; # Imports all object methods (by default) 1; #### package Cone::Head::code; # ... use Devel::NamedArguments qw< parseMethodArgs >; sub objectNamespace { my( $we )= @_; return $we."::Object"; } sub new { my( $we, %args )= parseMethodArgs(@_); my $me= init( \%args ); return bless $me, $we->objectNamespace(); } # $obj->init() will say: Can't locate object method "init" via package... sub init { ... } ... #### package Class::NiftyORM::code; sub Class::NiftyORM::CreateObjectFromDB { ... } package Cone::Head; *newFromDB= \&ClassNiftyORM::CreateObjectFromDB; package Cone::Head::Beldar; @ISA= qw< Cone::Head >;