HTML模板 - 哈希数组

时间:2012-05-29 10:25:01

标签: perl loops perl-html-template

我有两个哈希数组:第一个包含当前时间间隔的值,第二个包含上一个时间间隔的值。

 @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-Template来呈现这些数据。类似的东西:

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 个答案:

答案 0 :(得分:1)

另见http://www.perlmonks.org/?node_id=972954

我举了一个例子,说明如何用HTML :: Template :: Compiled解决这个问题。

基本上你会像这样浏览参数stash:

[%= expr=".AOHPREVIOUS[__index__]{'value'}" %]

或使用经典语法:

<TMPL_VAR expr=".AOHPREVIOUS[__index__]{'value'}" >

答案 1 :(得分:0)

使用HTML :: Template只能使用2个单独的列表。尝试使用HTML :: Template :: Expr进行操作将是一个难以维护的噩梦。尝试将它们折叠到合并哈希数据的单个列表中。