sub HollyGame::RaceClassBase::new { my( $class, %options ) = @_; my( $race, $class ) = ($class =~ /::([A-Z][a-z]+)([A-Z][a-z]+)/); $options{ class } = "HollyGame::$class"->new(...); $options{ race } = "HollyGame::$race"->new(...); bless \%options => $class; } package HollyGame::ElfRanger; use base 'HollyGame::RaceClassBase'; ... HollyGame::ElfRanger->new();