Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 在模板工具箱中使用变量访问哈希键_Perl_Template Toolkit - Fatal编程技术网

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
这样的方法是不小心的人在这里常见的陷阱。

我不明白你想做什么,出了什么错。或者甚至是有没有问题,看看你是如何只声明某些东西显示正确的。也许只是我,但我个人建议你重新表述你的问题,如果你想得到答案的话。在如何在模板工具包中声明散列变量方面,我给了你特别高的评价,因为我正在搜索,最后我来到了这里。