NAME CGI::Application::Plugin::PageBuilder - Simplifies building pages with multiple templates. SYNOPSIS This module is built on the idea that building complex web pages with the default CGI::Application method can get to be a real mess if you prefer to load many smaller templates to create your pages. Now instead of sub run_mode { my $self = shift; my $header = $self->load_tmpl( 'header.tmpl' )->output(); my $html; my $start = $self->load_tmpl( 'view_start.tmpl' ); $start->param( view_name => 'This View' ); $html .= $start->output(); my $db = MyApp::DB::Views->retrieve_all(); # Class::DBI while ( my $line = $db->next() ) { my $template = $self->load_tmpl( 'view_element.tmpl' ); $template->param( name => $line->name() ); $template->param( info => $line->info() ); $html .= $template->output(); } $html .= $self->load_tmpl( 'view_end.tmpl' )->output(); $html .= $self->load_tmpl( 'footer.tmpl' )->output(); return $html; } You can do this: CGI:App subclass: sub run_mode { my $self = shift; $self->pb_template( 'header.tmpl' ); $self->pb_template( 'view_start.tmpl' ); my $db = MyApp::DB::Views->retrieve_all(); while( my $line = $db->next() ) { $self->pb_template( 'view_element.tmpl' ); $self->pb_param( name, $line->name() ); $self->pb_param( info, $line->info() ); } $self->pb_template( 'view_end.tmpl' ); $self->pb_template( 'footer.tmpl' ); return $self->pb_build(); } Which arguably looks much cleaner. METHODS pb_template $self->pb_template( 'the_template_to_use.tmpl', ... ); Adds the template to the page. Any arguments past the template name are passed to HTML::Template. pb_param $self->pb_param( name, value ); Sets the value for the param in the template. This applies to the last template loaded by pb_template(). pb_build $self->pb_build(); Builds the page and returns the resulting HTML. TODO Passing options to HTML::Template needs more testing. AUTHOR Clint Moore "" LICENSE AND COPYRIGHT Copyright (c) 2005, Clint Moore "". This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.