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>

------------------------------------------------------------------------------
_______________________________________________
Html-template-users mailing list
Html-template-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/html-template-users

Reply via email to