How do I avoid 'hard coded'
require at the top of my module and place
require A::N::Other::typeOne; inside the
eval{};?
package Some::Class;
my $typeToTableLookup = {
'typeOne' => 'classOne',
'typeTwo' => 'classTwo',
};
require A::N::Other::typeOne; # Remove these
require A::N::Other::typeTwo; # two lines...
sub new
{
my ($proto, $type) = @_;
my $class = ref($proto) || $proto;
die( "Note type must be specified.\n" ) unless $type;
my $self = bless { type => $type }, $class;
return $self;
}
sub doSomeFoo
{
my ($self, $id) = @_;
my $typeTableName = $$typeToTableLookup{$self->{type}}
or die( "Type does not have a class\n" );
my $classFile = 'A::N::Other::'.ucfirst($typeTableName);
my $fooOb;
eval {
# require $classFile; # ... and replace them here.
$fooOb = $classFile->doSomeBar($id);
};
die $@ if $@;
return \$fooOb;
}
Or am I missing the point (as usual :P)?