package Your::SQL::Utils; use DBI; use DBD::Pg; sub new { my ($class, ...) = @_; bless { dbh => _connect() } => $class; } sub _connect { ... return $dbh; } sub dbh { my ($self) = @_; $self->{dbh}; } sub some_query { my ($self, ...) = @_; ... my $sth = $self->dbh->prepare(...); ... $sth->execute(...); ... } sub other_query { ... } #### # your_prog.pl use Your::SQL::Utils; use Getopt::Long; my $query; GetOptions('query=s' => \$query) or die "..."; my $util = Your::SQL::Utils::->new(); $util->$query(); #### $ your_prog.pl -q some_query