Chris Winters ([EMAIL PROTECTED]) said something to this effect on 05/02/2001:
> package MyServer::DB;
>
> use strict;
> use DBI;
>
> my $DB_USER = 'xxxx';
> my $DB_PASS = 'yyyy';
>
> sub connect {
> my ( $class, $dbname ) = @_;
> my $dbh = DBI->connect( 'DBI:mysql:mysql', $DB_USER, $DB_PASS,
> { RaiseError => 1 } )
> || die "$DBI::errstr\n";
> $dbh->do( "use $dbname" ) if ( $dbname );
> return $dbh;
> }
I wrote something like this once:
#######################################################################
package MyDB;
use DBI;
use base 'DBI::db';
{
my $dsn;
sub import {
my $class = shift;
while (@_) {
my ($n, $v) = splice @_, 0, 2;
$dsn->{$n} = $v;
}
}
sub new {
my $class = shift;
my $dbh = DBI->connect(
sprintf('dbi:mysql:%s:%s', @{$dsn}{'database','hostname'}),
$dsn->{'username'}, $dsn->{'password'},
{ RaiseError => 1 });
bless $dbh, $class;
}
}
sub DESTROY { shift->disconnect }
1;
#######################################################################
(With a little sanity checking inside &import to make sure all
the required entries at least have reasonable defaults).
Which gets used like so:
#!/usr/bin/perl
use MyDB username => 'foo', password => 'bar';
my $db = MyDB->new;
It makes all the database stuff a little cleaner, and a little
better encapsulated.
(darren)
--
Pessimests are right more often, but optimists are happy more often.