[Templates] FOREACH question

Eric Cholet cholet@logilune.com
Thu, 17 Aug 2000 16:24:39 +0200


Hi,

I'm just starting to use this great module so please bear with me...
I do not understand what's going on with the following usage:

#!/usr/bin/perl -w

use strict;
use Template;

my $data = {
'HOTELS' => [
            {
              'NUMHOTEL' => 1,
              'NOMHOTEL' => 'CHATEAU DE FOURCES'
            },
            {
              'LSTHOTELS' => [
                               {
                                 'NUM' => 2,
                                 'NOM' => 'CHATEAU DE FOURCES'
                               }
                             ],
              'NUMHOTEL' => 2
            }
          ],
};
my $text = <<EOF;
[% FOREACH HOTELS %]
<TR><TH>Hotel [% NUMHOTEL %]:</TH>
  <TD>[% IF NOMHOTEL %][% NOMHOTEL %][% ELSE %]
    <SELECT NAME="HOTEL">[% FOREACH LSTHOTELS %]
    <OPTION VALUE="[% NUM %]">[% NOM %]</OPTION>
    [% END %]</SELECT>
  [% END %]</TD>
</TR>
[% END %]
EOF
my $template = Template->new();
$template->process(\$text, $data)
        || die $template->error();


% ./testt

<TR><TH>Hotel 1:</TH>
  <TD>CHATEAU DE FOURCES</TD>
</TR>

<TR><TH>Hotel 2:</TH>
  <TD>CHATEAU DE FOURCES</TD>
</TR>


For "Hotel 2" I expected to see a <SELECT> block because "NOMHOTEL" isn't defined
in this case.

--
Eric Cholet