$$database_handle = DBI->connect(
map {
my $s = "database_$_";
exists $arguments{$_} ?
$arguments{$_} :
$s->()
}
qw(data_source_name username password
taint)
) or die "Could not connect to the ".
"database: $DBI::errstr";
####
sub database_username {
return "fred";
}
####
my %defaults = (
data_source_name => ".....",
username => "fred",
password => "fred",
taint => { Taint => 1 }
);
# then later...
%arguments = (%defaults, %arguments);
my $dbh = DBI->connect( @arguments{ qw(data_source_name
username password taint) })
or die "Could not connect to the database: ".
"$DBI::errstr";
####
my %defaults = (
data_source_name => \&database_data_source_name,
username => \&database_username,
password => \&database_password,
taint => \&database_taint,
);
# and later:
my $dbh = DBI->connect (
map {
exists $arguments{$_} ?
$arguments{$_} :
$defaults{$_}()
}
qw(data_source_name username password taint)
) or die "Could not connect to the database: ".
"$DBI::errstr";
# and somewhere else:
sub database_data_source_name {
# read stuff from file..
# do other stuff
return #something
}
####
map {
exists $arguments{$_} ?
$arguments{$_} :
${\"database_$_"}->()
}