in reply to HTML::Template how to use IF/Else in a LOOP

By default, only variables from the loop itself are accessible inside the loop. So if you have
$tmpl->param(a => [ { b => 1}, { b => 2 }]);

and a <TMPL_LOOP VAR=a>, then only the variable b is available within the loop, and no other variables, independently of other param() calls.

You can change that by setting global_vars => 1 in the constructor.

Replies are listed 'Best First'.
Re^2: HTML::Template how to use IF/Else in a LOOP
by tinita (Parson) on Jan 21, 2011 at 11:02 UTC
    and since one might avoid globals vars also in templates (I do): you might try HTML::Template::Compiled, where you can activate global vars partly (see "global_vars" in the OPTIONS section) - it allows you to "navigate" up the data structure, so <TMPL_VAR ..foo> will get you the var foo directly one level above (and 3 dots will go two levels up and so on (notice also that one dot goes to the root level, and for that you don't even need to set global_vars)).