使用Perl的HTML::Template
模块时如何访问哈希中的变量?
我在Perl代码中构建以下哈希:
# Load success/error flash messages
if ($query->param("submit")) {
$template->param(
FLASH => {
CLASS => "success",
MESSAGE => "Your cart has been successfully updated!"
}
);
}
我想在我的模板中访问这些变量。要访问常规变量,请执行以下操作:
<TMPL_VAR NAME=FLASH>
我如何在模板中访问FLASH [&#39; CLASS&#39;]?
答案 0 :(得分:2)
使用。访问。 (点)
FLASH.CLASS
答案 1 :(得分:1)
文档中没有任何内容表明您可以将参数设置为hashref。最接近你想要做的是将hashref放在arrayref:
中$template->param(
FLASH => [ {
CLASS => "success",
MESSAGE => "Your cart has been successfully updated!"
} ]
);
然后您可以按以下方式访问它:
<TMPL_LOOP NAME=FLASH>
<TMPL_VAR NAME=CLASS>
<TMPL_VAR NAME=MESSAGE>
</TMPL_LOOP>
但是拥有一个包含单个元素的数组可能会有点过分。另一种方法是去除hashref并使结构变平:
$template->param(
FLASH.CLASS => "success",
FLASH.MESSAGE => "Your cart has been successfully updated!"
);
...
<TMPL_VAR NAME=FLASH.CLASS>
<TMPL_VAR NAME=FLASH.MESSAGE>
答案 2 :(得分:1)
HTML :: Template总是需要散列数组散列数组,依此类推。 如果你有一个任意的数据结构,你可能想尝试HTML :: Template :: Compiled,你可以使用点语法(免责声明:我是作者)
还有HTML :: Template :: Plugin :: Dot,但我从来没有对它进行测试,似乎有点受限。