package MyHandler; sub handler($$) { my($class, $r) = @_; $class->do_this(); $class->do_that(); } sub do_this { # some default behavior } sub do_that { # some default behavior } package MyHandlerSubClass; use base qw(MyHandler); sub do_this { # do something else } sub do_that { ... } #### # I use Apache::DBI and also do something that resembles this in my code, but YMMV package My::DB; sub connect { my $r = Apache->request; my $dbh =$r->pnotes('MyDBIHandle'); if(!$dbh) { $dbh = DBI->connect(...); $r->pnotes('MyDBIHandle' => $dbh); } return $dbh; }