package MyApp::Object; use base qw( Class::Accessor::Fast ); use Carp qw( croak ); sub new { my $self = shift::SUPER->new( {} ); $self->load_config_file( shift() ); my $type = join( '::', ref( $self ), $self->config->{ 'type' } || 'General' ); eval "use $type"; if ( $@ ) { croak "Couldn't load $type: $@" } bless( $self, $type ); return $self; }