Разобрался! Если кому интересно:
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}