Since you're using mod_perl's Apache::DBI, I don't see any reason for trying to store a persistent connection in your class. Apache::DBI already provides a persistent connection pool. I have the same setup as you(apache/mod_perl/mysql), I have one module that exports a function get_connection(), in all my other scripts I simply call get_connection(). The extra work you are doing won't be more efficient than that.