#!/usr/bin/perl use strict; use warnings; use CGI; use HTML::Template::Compiled; my $cgi = CGI->new(); my %params = $cgi->Vars(); my %func_pool = (SHOW_MEMBERS => [\&show_members, 'member.tmpl'], SHOW_NEWS => [\&show_news,'news.tmpl'], ); my $template = HTML::Template::Compiled->new(filename => '/path/to/file.tmpl'); for(keys(%params)){ if(exists $func_pool{$_}){ $template->param($_ => $func_pool{$_}->[1]); $template->param($_.'TMPL' => $func_pool{$_}->[0]->()); } } sub show_members{ my $select = q~SELECT name FROM members~; my $sth = $dbh->prepare($select) or die $dbh->errstr(); $sth->execute() or die $dbh->errstr(); my @members; while(my ($name) = $sth->fetchrow_array()){ push(@members,{NAME => $name}); } $sth->finish(); return [@members]; }