use Template; my $template = Template->new({ POST_CHOMP => 1, EVAL_PERL => 0, # note: false! }); $template->process(\*DATA, {}, \*STDOUT) or die $template->error; __DATA__ [% MACRO fib(n) BLOCK %] [% IF (n < 2) %] [% n %] [% ELSE %] [% fib(n - 1) + fib(n - 2) %] [% END %] [% END %] Fibonacci sequence... [% FOREACH i IN [ 1 2 3 4 5 6 7 8 9 10 ] %] [% fib(i) +%] [% END %]