#!/usr/bin/perl -Tw use strict; use warnings; my $dbh = self->new("DBI:mysql:database=test", undef, undef); # Reference database handle via self package # $dbh->execute("select * from users"); # ... or ... # Reference database handle methods directly from calling script # $dbh->{dbh}->do("select * from users"); exit 0; package self; use DBI; use strict; sub new { my $param = shift; my $self = {}; bless ($self, (ref($param) || $param)); $self->{dbh} = DBI->connect(@_); return $self; }; sub execute { my $self = shift; return $self->{dbh}->do(@_); }; 1; __END__