use Template; my $tt = Template->new; $tt->process(\*DATA, { comp => { name => 'foo', modtime => scalar(localtime) } }) || die $tt->error(); __DATA__ [% WRAPPER wrap comp = comp %] content goes here [% END %] [% BLOCK wrap %] [% content %] [% END %]