hmm... I dont consider this to be a bug...
here you create a global variable called 'gvar'
> $t->param(gvar => "global variable");
here you are creating a loop specific variable called 'gvar'
> { loopvar => "GVar should be set", gvar => "Loop GVar 1" },
These two 'gvar's are two different variables.
In this case
> { loopvar => "GVar should be blank again", gvar => undef },
you are saying that the loop specific 'gvar' is not part of the loop - ie equivalent
to:
{ loopvar => "GVar should be blank again" }
thus requesting the outer global gvar to come into scope.
Consider:
t->param(gvar => "Global gvar");
my $gvar_val;
my @loop;
for.... {
if (something) {
$gvar_val = "Loop GVar 1";
} elsif (somethign else) {
$gvar_val = "";
}
my $tmp;
$tmp->{loopvar} = ...;
$tmp->{gvar} = $gvar;
push @loop, $tmp;
}
t->param(testloop =>[EMAIL PROTECTED]);
What would you expect the TMPL_LOOP to do in that example?
I would have expected that the third iteration to use the global gvar value.
Mathew
> ========================================================================
> test.tmpl:
> ----------
> Global Variable gvar is: <tmpl_var name=gvar>
>
> Loop: <tmpl_loop name=testloop>
> loopvar: <tmpl_var name=loopvar>
> gvar : <tmpl_var name=gvar>
> </tmpl_loop>
> ========================================================================
> test.pl
> -------
>
> use strict;
> use HTML::Template;
>
> my $t = new HTML::Template(filename => "test.tmpl", global_vars => 1,)
> || die;
>
> my $testloop = [
> { loopvar => "GVar should be set", gvar => "Loop GVar 1" },
> { loopvar => "GVar should be blank", gvar => "" },
> { loopvar => "GVar should be blank again", gvar => undef },
> ];
>
> $t->param(gvar => "global variable");
> $t->param(testloop => $testloop);
> print $t->output();
> ========================================================================
>
> When you run test.pl.. you get the following output:
> ------------------------------------------------------------------------
> Global Variable gvar is: global variable
>
> Loop:
> loopvar: GVar should be set
> gvar : Loop GVar 1
>
> loopvar: GVar should be blank
> gvar :
>
> loopvar: GVar should be blank again
> gvar : global variable
> ------------------------------------------------------------------------
>
> Now, the issue is that "gvar" in the third iteration of the loop,
> "should have been blank"... i explicitely set it to "undef" in the
> code.. however, since global_vars was on, it ignored my "undef".
-------------------------------------------------------
This SF.Net email is sponsored by Sleepycat Software
Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to
deliver higher performing products faster, at low TCO.
http://www.sleepycat.com/telcomwpreg.php?From=osdnemail3
_______________________________________________
Html-template-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/html-template-users