package App::Backend;
use App::Config;
use base "App::Backend::App::$Config::Backend_Type";
sub shared_method_1 {
my $self = shift;
#....
}
# ... the rest of the module...
1;
####
sub type {
my $self = shift;
return 'SQL';
}
##
##
sub type {
my $self = shift;
return 'PlainText';
}
##
##
#!/usr/bin/perl
use Test::More qw(no_plan);
for(qw(PlainText SQL){
require App:Config;
$App::Config::Backend_Type = $_;
require App::Backend;
ok($App::Config::Backend_Type eq $_);
my $backend = App::Backend;
ok($backend->type eq $_); # Wrong!
}