Si estás realizando tu aplicación con CGI::Application entonces no tienes razón por cual hacer tu conexión de otra manera, recuerda que la subrutina
cgiapp_init se ejecuta siempre antes de tus subrutinas principales, la idea es que ahí pongas todo lo que será compartido por tus conexiones, la idea es la reusabilidad.
Si ves creas tu conexión y registras el objeto con tu aplicación base, así que tienes todas tus subrutinas accesos al objeto DBI sin mayor problema, lo cual es la mejor manera, pues en aplicaciones grandes, se deben de evitar las variables globales lo más posible.
Ahora, el módulo CGI::Application::Plugin::DBH, está creado con la intención de usarse como plugin de CGI::Application, así que no veo porque se te pediría que lo uses en otros casos, para ello simplemente usas directamente el módulo DBI, por ejemplo:
http://perlenespanol.com/tutoriales/bas ... abase.htmlSaludos