use HTML::Template; $t = HTML::Template->new( filehandle => *DATA, die_on_bad_params => 0 ); $t->{options}->{loop_context_vars} = 1; # turned on so I can use $t->{options}->{global_vars} = 1; # turned on so I can have a global var appear inside a loop $t->param( foo => [ { baz => 1 }, { baz => 2 }, { baz => 3 } ] ); # some loop data $t->param( bar => 'global var!' ); # a global variable print $t->output(); __DATA__ first! *