I have written similar things, and on a small scale i find
HTML::Template to work very well. Now, if it is of larger scale, maybe
HTML::Mason, or one of the many other Template systems will be needed.
I understand that holding the data in the database in XML format will give you more flexability, and i suggest the always good
XML::Writer and
XML::Parser for all of your XML needs. I do implore you though, please spend as much time as you can on the XML design, because if you do not, all of the flexability that XML promisses in this buzzword-tastic world will be lost.
Other than that, i will not post a complete template/DBI/CGI solution here, but would feel better if you use the information above to make an educated decision when start to write the code.
my $two = $euro/100;
i had a memory leak once, and it ruined my favorite shirt.