Using templates is a good idea, but for marking up a Perl code template, I'd choose a syntax other than Text::Template's interpolation style, which requires a lot of back-slashing of braces and variable sigils. I think the templates would be easier to read if in the HTML::Mason or EmbPerl syntaxes, both of which are equally easy to fill in.
It is possible (and even encouraged by the documentation) to change the delimiters that Text::Template looks for so that you don't have to backslash the braces. For instance: