Предложение Template :: Provider, приведенное выше, вероятно, является лучшим способом сделать это.Но есть и более простой (хотя и немного хакерский) подход.Вы можете прочитать шаблон в скаляр и выполнить любые преобразования на нем, какие захотите, прежде чем передавать его в процессор шаблонов.
my $tt = Template->new;
open my $template_fh, '<', 'template.tt' or die $!;
my $template = do { local $/; <$template_fh> };
$template =~ s/some regex/some replacement/;
my $vars = { template => 'variables' };
$tt->process(\$template, $vars) or die $tt->error;
Секрет в том, что метод process () принимает различные типы значений в качествеПервый параметрЕсли вы дадите скаляр, то это будет имя файла, содержащего шаблон.Но если это ссылка на скаляр, то предполагается, что этот скаляр содержит фактический шаблон.Подробнее см. в документации .