package App::Base; sub engine { my($self, $template) = @_; # application object my $self = shift; # database handle my $dbh = $self->param('dbh'); # get cgi query object my $q = $self->query(); my %post = $q->Vars; # $template actions... # output $tmpl->param( tmpl_sub => $tmpl_sub->output() ); return $tmpl->output; } sub template { my $tmpl = $self->load_tmpl('main.phtml'); } package App::This; use base qw(App::Base); sub template { my $self = shift; $self->SUPER::template(); my $tmpl_sub = $self->load_tmpl('this.phtml'); } package App::That; use base qw(App::Base); sub template { my $self = shift; $self->SUPER::template(); my $tmpl_sub = $self->load_tmpl('that.phtml'); } 1;