模板工具包中的哈希解除引用

时间:2014-01-12 01:48:31

标签: perl hash multidimensional-array dereference template-toolkit

我有一个多维哈希,我正试图在表格中打印出来。我无法正确引用/解除引用。

我正在将一个excel电子表格放入哈希中,我想在html中打印出相应的行和列,并匹配电子表格的行/列(其中一些是空的)。

我正在使用 Perl Dancer 模板工具包。在服务器端,哈希工作正常。服务器端print $big_table{$column}{$row};,它打印正确的列和行,没有问题。

在客户端,0, 1, 2...应该是列。有些列是空白的,所以我不能只打印内容。

它现在的方式是打印ARRAY(0x3e5389c)。我尝试了另一种方式,它打印HASH ......

我知道我有一些参考/解引用问题。欢迎任何建议。

服务器端代码:

my %big_table = ();

# $cell->value() is the text ripped from the excel cell at that location
$big_table{$column}{$row} = $cell->value();

template 'index', { big_table => \%big_table };

客户端:

<Table border="3">
<% FOREACH n IN big_table.0 %>

<TR><TD>&nbsp<% big_table.0.keys %>&nbsp<TD>&nbsp<% big_table.1.keys %>
&nbsp<TD>&nbsp<% big_table.2.keys %>&nbsp<TD>&nbsp<% big_table.3.keys %>
&nbsp <TD>&nbsp<% big_table.4.keys %> 
&nbsp<TD>&nbsp<% big_table.5.keys %>&nbsp

<% END %>
</Table>

提前致谢!

1 个答案:

答案 0 :(得分:0)

搞定了。

更改为数组。 '$ big_table [$ col] [$ row] = $ cell-&gt; value();'并使用所有行#'填充第二个数组。

客户端看起来像

<% FOREACH r IN row_numbers %>
<TR><TD> &nbsp <% big_table.0.$r %> &nbsp <TD> &nbsp <% big_table.1.$r %>...
<% END %>

效果很好,但它可能很疯狂:(。电子表格长达800行,因此它是第二个包含800个元素的数组,只是为了迭代'FOREACH'循环。