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 >;