# Nick Thornton wrote:
#
# So I'm writing a program to create pages from a database. In the past when
# writing scripts like this I had the formatting for the pages built into the
# program, this time I'm having the formatting in a separate template file. Now
# the problem is how to replace strings like $variable in the template with the
# value of the variable itself. Since I don't want to do a search-and-replace for
# every possible variable, is there a simpler way to do this? (In the past I've
# used <<HERE to interpolate when I set the variable, but I'd rather not have to
# read through the template file more than once)    =~wren



###  To output dynamically from a template file after putting in
###  what your database or your clock has to offer,
###  you can do something like this:

###  Some variables:
$MyColour = "aabbcc";      ### should be a soft light blue
$today    =  (localtime)[3] . "." .
            ((localtime)[4]+1) . "."  .
            ((localtime)[5]+1900);
$to_whom =  "Folks";
$MyText   = "Mytown, $today<br><br>\n\n" .
            "Hi $to_whom!<br>\n" .
            "This is the power of 'dynamic text'.";

###   read template:
$MyTemplate = join "", <DATA>;

### Now you might have to defuse single and double quotes:
$MyTemplate =~ s,(['"]),\\$1,g;

### output:
print "\n--------   not yet interpolated: ------\n";
print $MyTemplate;
print "\n\n-------      interpolated:      --------\n";
print eval "\"$MyTemplate\"";
print "\n---------------------------------------\n\n";


__DATA__

<HTML>
<HEAD><HEAD>
<BODY bgcolor=#"$MyColour">
$MyText
</BODY></HTML>

Reply via email to