package Hue::SQL; sub new { return dbi->connect blah blah; } package Hue::Foo { sub new { my $class = shift; my %args = @_; my $self = {}; bless $self, $class; $self->{dbh} = $args{dbh}; $self; } sub do_something { my $self = shift; my %args = @_; $self->{dbh}->do( "sql query using $args{data}" ); } package main; use strict; use warnings; use Hue::SQL; use Hue::Foo; my $dbh = Hue::SQL->new(); my $foo = Hue::Foo->new( dbh => $dbh ); $foo->do_something( data => $data );