# Arguments are city code ('lon' or 'par') and an environment ('prod' or # 'test') use Module::Load qw{ load }; sub load_database_module { my ( $city, $envir ) = @_; state $city_map = { lon => 'London', par => 'Paris', }; state $envir_map = { prod => 'Production', test => 'Test', }; state $type_map = [ qw{ Prod` Test } ]; $city_map->{$city} or die "Invalid city '$city'"; $envir_map->{$envir} or die "Invalid envir '$envir'"; my $class = sprintf 'App::%s::%s::LogTable', $city_map->{$city}, $envir_map->{$envir}; load( $class ); return $class; }