Разобрался! Если кому интересно:
use CGI qw(:standard);
print header();
$TEST = "Test Message";
print &template("./test.tpl");
exit;
sub template
{
my $filename = $_[0];
my $tpl;
open(TPL,"<$filename");
while() {$tpl .=$_}
close(TPL);
my @matches = $tpl =~ m/(\\{\\$\\w*?\\})/g;
my $matches_found = @matches;
for($i=0; $i<$matches_found; $i++){
$pattern = @matches[$i];
$pattern =~ s/\\{/\\\\{/g;
$pattern =~ s/\\}/\\\\}/g;
$pattern =~ s/\\$/\\\\\\$/g;
$tpl_var = substr($pattern, 3, -2);
$eval_str = \'$tpl =~ s/\'.$pattern.\'/\'.$tpl_var.\'/gemi;\';
eval($eval_str);
}
return $tpl;
}
........
файл test.tpl:
Mess: {$TEST}