in reply to Review and Suggestions - My First Module

You might want to catch typos for what kind of database it is. Sure this error will be caught eventually and you will be able to track it down, but right now, if you do this:
my $dbh = My::DB->new({server => 'foo', db => 'oops.db'})
you will get errors related to your returning of undef at the first location where you try to use the value in stead of a nice Carp saying something to the effect of "Hey, I don't know what a 'foo' database is." which will be reported for the line where the mistake actually occurs.

Try something like:
if ($data->{server} eq 'pg') { ... } elsif ($data->{server} eq 'sqlite') { ... } else { Carp::croak "Oops, you tried to access a '$data->{server}' type data +base, but I have no idea what that is"; }