in reply to using templates

My suggestion would be to avoid rolling your own in this situation. There are lots of great pre-existing modules to do templates (ex: HTML::Template, Template::Toolkit). They provide the simple "replace" functionality that you're trying to implement as well as much fancier things (loops, for instance) which you can use to further enhance your documents

See this article to find out which one is best for you.

My own personal preference is to use HTML::Template because of its simplicity.

Here's a quick example (given here) using HTML::Template:

A template file (test.tmpl)
<HTML> <HEAD> <TITLE>Test Template</TITLE> </HEAD> <BODY> My Home Directory is <TMPL_VAR NAME="home">. My Path is set to <TMPL_VAR NAME="path">. </BODY> </HTML>
...and some code to use the template:
use HTML::Template; # open the HTML template my $template = HTML::Template->new(filename => 'test.tmpl'); # fill in some parameters in the template $template->param(home => $ENV{HOME}); $template->param(path => $ENV{PATH}); # send the obligatory Content-Type print "Content-Type: text/html\n\n"; # print the template print $template->output;
Update: Fixed Template::Toolkit link, thanks zigdon.