HTML-шаблон - Array of Hash
У меня есть два массива хэшей: первый содержит значения для текущего временного интервала, а второй содержит значения для предыдущего временного интервала.
@AoHcurrent=
( { node => "ABC",
link => "DEF",
time => "10:00",
value => "100",
},
{
node => "FGH",
link => "IJK",
time => "10:00",
value => "200",
},
);
@AoHprevious=
( { node => "ABC",
link => "DEF",
time => "09:45",
value => "10",
},
{ node => "FGH",
link => "IJK",
time => "09:45",
value => "50",
},
);
Я хочу теперь использовать HTML-шаблон для представления этих данных. Что-то вроде:
NODE LINK VALUE
---------------------
ABC DEF 100(10)
FGH IJK 200 (50)
значения в скобках представляют предыдущее значение.
my %html_template_parameters =
( AOHCURRENT => \@AoHcurrent,
AOHPREVIOUS => \@AoHprevious, );
my $html_template=qq{Report.tmpl};
my $html_output=qq{Report.html};
htmlReport($html_template,$html_output,\%html_template_parameters);
где htmlReport - это функция, которая генерирует отчет
Мне нужно руководство по определению файла Report.tmpl.
Заранее спасибо
2 ответа
См. также http://www.perlmonks.org/?node_id=972954
Я привел пример, как это можно решить с помощью HTML::Template::Compiled.
По сути, вы должны перемещаться по параметру stash следующим образом:
[%= expr=".AOHPREVIOUS[__index__]{'value'}" %]
или с классическим синтаксисом:
<TMPL_VAR expr=".AOHPREVIOUS[__index__]{'value'}" >
Вы не можете сделать это с 2 отдельными списками только с HTML::Template. И пытаться сделать это с помощью HTML::Template::Expr было бы кошмаром. Попробуйте свести их в один список, где хеш-данные объединяются.