use warnings;
use strict;
sub get_config { return "Foo!" }
1;
####
use warnings;
use strict;
sub get_config { return "Bar!" }
1;
####
use warnings;
use strict;
sub load_config {
my $file = shift;
local *get_config;
if (not my $return = do $file) {
die "couldn't parse $file: $@" if $@;
die "couldn't do $file: $!" unless defined $return;
die "couldn't run $file" unless $return;
}
return \&get_config;
}
my $foo = load_config( "Foo.conf" );
my $bar = load_config( "Bar.conf" );
print $foo->(), "\n"; # prints "Foo!"
print $bar->(), "\n"; # prints "Bar!"