I posted this question on PerlMonks and didn't get any replies ...
I've got some code where I create an HTML::Template object at the top,
and then later on, may want to use the options loop_context_vars or
global_vars depending on conditionals.
There's nothing in the POD about doing it that, way. But by dumping
the HTML::Template object, I could see that these could be accessed
like this:
$t->{options}->{loop_context_vars} = 1;
$t->{options}->{global_vars} = 1;
[download]
interestingly, it works for loop_context_vars but not global_vars
Is there a reason for this? Can I do it a different way? Or
alternatively, should I just turn them both on, even if they're not
needed, and not try and do it conditionally? I was just being
naturally conservative about turning on features which wouldn't be
needed, that's all. Is there any kind of speed or performance
implication to using these features?
Example code:
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 <tmpl_if name="__first__">
$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__
<tmpl_loop name="foo">
<tmpl_var name="bar"> <!-- this doesn't appear -->
<tmpl_if name="__first__">
first!
</tmpl_if>
* <tmpl_var name="baz">
</tmpl_loop>
|