I got one suggestion: add another layer of abstraction.
Put all your DBI stuff into a subclass, like AuthorWeb::DBI. I personally, would reccomend DBI::DWIW, but a straight DBI subclass is fine.
in reply to Help with my Coding Style - another chance to critique
You ought to add the magical AUTOLOAD => \&catch_my_exception, to the run_modes.
You also ought to set tmpl_path in your .cgi
Also, saying stuff like
my $app = AuthorWeb->new(
tmpl_path => 'tmpl',
might not hurt (i find this to be the most neglected general programming practice amongst folk, cause it works on their system).
use CGI::Application qw( 2.4 );
use CGI qw( 2.7 );
Since you're using XML and XSLT, you might wanna migrate to AxKit.