in reply to OOP design related question.

I like having a CGI::App accessor method, similar to $self->query(), like:
my $dbh = $self->dbh();
I've also seen a module created just for that, so you say:
use MyDBH; my $dbh = MyDBH->get(); # or Exporter, but I hate this. use MyDBH qw($dbh);
or something. In my opinion the first option is cleaner and more consistent. It seems silly to always say $self->param('dbh'); when you can just define your own dbh() method. More consistent, too (since it is required by your app to function).