我无法在Catalyst中的Stash中添加Hash

时间:2011-10-24 21:59:23

标签: perl catalyst

我有一些关键/值对的哈希

my %hash = ('key1','value1', 'key2', 'value2');

我在Stash中传递它以在html模板中使用它:

$c->stash( theHash => %hash);

然后,在模板中,要显示值,我认为我应该使用类似

的内容
[% theHash.key1 %] #It should display "value1"
[% theHash.key2 %] #It should display "value2"

但它不起作用。

如果我逐个传递值,它会起作用:

$c->stash( valueOfHash1 => $hash{'key1'});
$c->stash( valueOfHash2 => $hash{'key2'});

将其检索为

[% valueOfHash1 %] #It displays "value1"
[% valueOfHash2 %] #It displays "value2"

但是哈希会有很多值。这似乎是一个好主意。

我缺少什么?提前谢谢。

2 个答案:

答案 0 :(得分:11)

如果将哈希删除到列表上下文中,它将被展开到列表中。

您想存储哈希引用。

$c->stash( theHash => \%hash);

答案 1 :(得分:0)

或者你可以使用这种方法:

$c->stash->{theHash} = { %hash }; # It creates an anonym hash reference 
                                  # which keeps the %hash data
...
print $c->stash->{theHash}->{key1}; # value1