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 が配列の位置を参照するのか、ハッシュ キーを参照するのかについての混乱です。おそらく、数値キーが配列に属していると想定していると思います。

vmethoditem()は、他のvmethod と混同される可能性のあるハッシュ キーがある場合に役立つ回避策であることがよくあります。私は次のことを試します:

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

2 番目の問題は簡単に分類できます (駄洒落をお許しいただければ)。

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

ところで、あなたの例の最後に別の開始タグがありますが、元のコードでは<tt>正しい (終了) と思います。</tt>

于 2012-10-31T23:06:35.117 に答える