Text::Template is a nice and fast module if you need to create a few simple dynamic webpages. I recently used it for a project where I needed easy installation, and since Text::Template didn't require any other Perl modules than what is in the core, it came in very handy.
The documentation gives a simple example on how to include sub-templates. In my improved example, by using a closure, you can very comfortably inherit the parameters set for your current template in the templates you include.
I use this function to fill in templates:
sub _fill_in {
my ($template, %params) = @_;
$params{include} = sub {
_fill_in(shift, %params, @_);
return '';
};
my $template = Text::Template->new(
SOURCE => catfile($templates_path, "$template.tmpl"));
$template->fill_in(HASH => \%params, OUTPUT => \*STDOUT);
}
Then, a template might look like this:
{include('_header', title => 'Page title')}
<p>Some text...</P>
{include('_footer')}