{ my %class_for = ( lonprod => sub { require App::London::Production::LogTable; return 'App::London::Production::LogTable'; }, parprod => sub { require App::Paris::Production::LogTable; return 'App::Paris::Production::LogTable'; }, ... ); sub get_class { $class_for{$_[0]}->() } } my $class = get_class($database); $class->find_and_create(...);