use HTML::Template; my $t = HTML::Template->new( scalarref => \'[%!-- TMPL_VAR name="foobery" escape=html --%]', filter => sub { my $text_ref = shift; $$text_ref =~ s| \[\% (?:!--\s*)? # ( [Tt][Mm][Pp][Ll]_ [^\]]+? ) #$1 (?:--\s*)? \%\] |<$1>|xg; } ); $t->param(foobery => 'barbery>>'); die $t->output(); __END__ barbery>> at html.template.pl line 11.