package SomeDatabaseStuff;
sub my_funny_sql{
my ($dbh) = @_;
$dbh->do('my great query');
}
####
my_funny_sql($dbh);
##
##
$dbh->SomeDatabaseStuff::my_funny_sql();
##
##
$dbh->SomeDatabaseStuff::my_funny_sql ( 'some parameter', 12 , 34 );
##
##
package MoreDatabaseStuff;
@MoreDatabaseStuff::ISA = qw( SomeDatabaseStuff);
# no subroutines here
$dbh->MoreDatabaseStuff::my_funny_sql();
# ends up being dispatched properly
# to the sub in the parent SomeDatabaseStuff
##
##
my $dbh = DBI->connect('....');
$dbh->SomeDatabaseStuff::my_funny_sql;