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 { ... } ...