package Xing::DBI; use strict; use utf8; use Xing::Config; use base qw(DBI); use Data::Dumper; sub connect { my ($class,$db_conf) = @_; my $conf = Xing::Config->get_config(); my $db = "DBI:mysql:database=$conf->{db}->{db_name};host=$conf->{db}->{host}"; my $dbh = DBI->connect($db, $conf->{db}->{db_user}, $conf->{db}->{db_pass}, $conf->{db}->{db_opt}); $dbh->do("SET NAMES $conf->{db}->{client_encoding}") or die "cannot set encoding"; return $dbh; } 1; __END__
上記の例では、DSN文字列を
"DBI:mysql:database=$conf->{db}->{db_name};host=$conf->{db}->{host}"
のように指定していますが、以下のいずれであっても接続できます。
dbi:mysql:database=test dbi:mysql:host=localhost;port=3306;database=test dbi:mysql:dbname=test dbi:SQLite:dbname=/tmp/data.db
※SQLiteはオマケです