0

以散列引用开头....

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....

4

1 回答 1

1

第一个问题可能是混淆了 $index 是指数组位置还是哈希键。我怀疑它可能假设一个数字键属于一个数组。

当您的哈希键可能与其他 vmethod 混淆时,vmethod通常是一种有用的解决方法。item()我会尝试以下方法:

<tt>index number=[%index%]  value_1=[%myhash.item(index).0%]
    value_2=[%myhash.item(index).1%]
</tt>

第二个问题很容易分类(如果你会原谅双关语):

[%- FOREACH index IN myhash.keys.nsort -%]

顺便说一句,<tt>您的示例末尾还有另一个 open 标记,但我认为它</tt>在您的原始代码中是正确的(关闭)。

于 2012-10-31T23:06:35.117 回答