in reply to inheritance not working as expected

DBI seems to play some tricks with inheritance. When you call connect, you get an object that is blessed into a different class (i.e. not DBI). So your attempt to inherit from DBI is not giving you the desired inheritance.

One possible way to handle this is to push the class of the returned value from connect on your own @ISA:

package mydbh; @ISA = qw( DBI ); require DBI; use strict; sub new { my( $class, $dns, $username, $password ) = @_; my $self = DBI->connect( $dns, $username, $password ); push (@ISA, ref($self)) if (not grep { $_ eq ref($self) } @ISA); return bless $self, $class; }

Also, I don't like dual-mode constructors (i.e. the bless $self, $class||ref $class stuff). Usually, you want to do something different if you're cloning an existing object (i.e. not just copy its class). In this case, you would probably want to clone the handle.