从哈希引用开始......
my $my_hash = {};
在循环中构建哈希...
push(@tmp_arr,$val1);
push(@tmp_arr,$val2);
$my_hash->{$index} = \@tmp_arr;
任何密钥的元素都可以正常访问$ my_hash-> {$ index} [0]
我正在传递这样的哈希:
my $vars = {
myhash => $my_hash
};
问题1:尝试像这样打印,它正确打印索引但不打印任何值....我很困惑为什么?
[%- FOREACH index IN myhash.keys.sort -%]
<tt>index number=[%index%] value_1=[%myhash.$index.0%] value_2=[%myhash.$index.1%]<tt>
[% END -%]
问题2:排序没有按数字排序,所以我得到1,10,11,12 .... 2,20,21 ......
答案 0 :(得分:1)
第一个问题可能是由于$ index是指数组位置还是散列键而引起的混淆。我怀疑它可能假设一个数字键属于一个数组。
当您使用可能与其他方法混淆的哈希键时,vmethod item()
通常是一种有用的解决方法。我会尝试以下方法:
<tt>index number=[%index%] value_1=[%myhash.item(index).0%]
value_2=[%myhash.item(index).1%]
</tt>
第二个问题是easily sorted(如果你原谅双关语):
[%- FOREACH index IN myhash.keys.nsort -%]
顺便说一下,示例末尾还有另一个打开的<tt>
标记,但我认为原始代码中的标记是正确的(结束</tt>
)。 < / p>