Hello. I am confused about how local/global variables work within a FOREACH
loop. Consider this Perl program:
use Template;
my %data = (
'presidents' => [
{first_name => 'Bill', last_name => 'Clinton'},
{first_name => 'George'},
{first_name => 'Barack', last_name => 'Obama'},
],
);
my $tt = Template->new();
$tt->process('test.html', \%data);
and this "test.html" file:
[% FOREACH p IN presidents %]
Name: [% p.first_name %] [% p.last_name %]<BR>
[% END %]
[% FOREACH presidents %]
Name: [% first_name %] [% last_name %]<BR>
[% END %]
>From what I gathered on the Template::Manual::Directives page, the second
>FOREACH loop is just the short form of the first version. And yet the output
>in the second case is unexpected:
Name: Bill Clinton<BR>
Name: George <BR>
Name: Barack Obama<BR>
Name: Bill Clinton<BR>
Name: George Clinton<BR>
Name: Barack Obama<BR>
In the first case, "George" has no last name, so no value is printed. In the
second case, it appears "George" inherits the "last_name" value from the
previous iteration.
Is this the intended operation?
_______________________________________________
templates mailing list
[email protected]
http://mail.template-toolkit.org/mailman/listinfo/templates