end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

perl DBIで指定するDSN文字列には複数の書式があります

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はオマケです