【问题标题】:template toolkit hash values not printing and keys not sorting numerically模板工具包哈希值未打印且键未按数字排序
【发布时间】:2012-11-01 07:06:35
【问题描述】:

从一个哈希引用开始......

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

【问题讨论】:

    标签: template-toolkit


    【解决方案1】:

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

    当您拥有可能与其他 vmethod 混淆的哈希键时,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 -%]
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-07
      • 2012-09-06
      • 2013-04-06
      • 2022-01-19
      • 2010-10-20
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多