Note that CGI::Application doesn't require HTML::Template (except perhaps for installation). I, and quite a few others, use it quite happily with Template-Toolkit
), and it can be used with many other templating systems since it doesn't fiddle with content, just flow control.
My preferred method is to create a sub-class of CGI::Application that includes anything site-wide I want to use. My application modules are then subclasses of this class. (It makes more sense when you read the CGI::App docs)