Perl 在模板工具箱中使用变量访问哈希键
我有一个数组,它的内容是Perl 在模板工具箱中使用变量访问哈希键,perl,template-toolkit,Perl,Template Toolkit,我有一个数组,它的内容是 $VAR1 = { '1' => 'May 05, 2011', '0' => 'Jul 22, 2009', '2' => 'Jun 13, 2012' }; 我试图在catalyst模板中显示它,代码是 [% x = 0 %] [% FOREACH mortgage IN mortgages %] <table width=40% border=1 cellspacing="0" cellpadding="10"> <
$VAR1 = {
'1' => 'May 05, 2011',
'0' => 'Jul 22, 2009',
'2' => 'Jun 13, 2012'
};
我试图在catalyst模板中显示它,代码是
[% x = 0 %]
[% FOREACH mortgage IN mortgages %]
<table width=40% border=1 cellspacing="0" cellpadding="10">
<tr>
<td>Date</td>
<td><b>[% dateformat.x %]</b></td>
</tr>
</table>
[% x = x+1 %]
[% END %]
[%x=0%]
[%FOREACH mortgage IN mortgages%]
日期
[%dateformat.x%]
[%x=x+1%]
[%END%]
根据x的值,dateformat.x应显示2011年5月5日或2009年7月22日或2012年6月13日,但错误是它不显示任何内容。它显示一个空白
我认为错误在于数组中的键是字符串,而与dateformat一起使用的x值是数字。如果我用dateformat添加0或1,则它将正确显示([%dateformat.0%])。
[%dateformat.x%]
在dateformat
散列中查找x
。要告诉模板工具箱x
是一个变量,请在其前面加上$
:
[% dateformat.$x %]
要使用存储在另一个变量中的键访问散列项,请在键变量前面加上“$”前缀,以便在使用前对其进行插值(请参阅)
我很感激这个问题已经被问到并得到了回答,但另一个方便的选择是
item()
。当您的散列键与VMMethods冲突时,这尤其有效:
[%- SET myhash = { last => 'Blues', first => 'Elwood',
address => '1060 West Addison', city => 'Chicago' };
myhash.first; # doesn't do what you want,
# because first is a VMethod for 1st element in an array
myhash.item('first'); # displays "Elwood"
-%]
像
first
、last
、size
和sort
这样的方法是不小心的人在这里常见的陷阱。我不明白你想做什么,出了什么错。或者甚至是有没有问题,看看你是如何只声明某些东西显示正确的。也许只是我,但我个人建议你重新表述你的问题,如果你想得到答案的话。在如何在模板工具包中声明散列变量方面,我给了你特别高的评价,因为我正在搜索,最后我来到了这里。