【发布时间】:2014-01-30 23:04:30
【问题描述】:
我有一个多维散列,我正试图在表格中打印出来。我无法正确引用/取消引用。
我正在将一个 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> <% big_table.0.keys %> <TD> <% big_table.1.keys %>
 <TD> <% big_table.2.keys %> <TD> <% big_table.3.keys %>
  <TD> <% big_table.4.keys %>
 <TD> <% big_table.5.keys %> 
<% END %>
</Table>
提前致谢!
【问题讨论】:
-
搞定了。从散列更改为数组。 '$big_table[$col][$row] = $cell->value();'并用所有行#填充第二个数组。客户端看起来像
      ... 效果很好,但它可能是疯狂的低效:(。电子表格有 800 行长,所以它是一个包含 800 个元素的第二个数组,只是为了迭代“FOREACH”循环。 将您的结果发布为答案并将其标记为已接受。效率低下?!为什么你认为迭代 800 多个数组索引比 800 个哈希键效率低?没有更多或更少的效率。我的意思是我创建了一个添加了 $row 位置的附加数组,只是因为我可以使取消引用正常工作。我之前尝试过发布答案,但它不会让我这样做。我没有足够的街头信誉或其他什么......我想我等了足够长的时间,因为它现在让我。
标签: perl hash multidimensional-array dereference template-toolkit