Я не могу добавить хэш в тайник в Catalyst

#perl #catalyst

#perl #катализатор

Вопрос:

У меня есть хэш с некоторыми парами ключ / значение

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

Я передаю его в тайник, чтобы использовать его в шаблоне 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"
  

Но хэш будет иметь много значений. Это действительно кажется хорошей идеей.

Чего мне не хватает? Заранее благодарю.

Ответ №1:

Если вы поместите хэш в контекст списка, он будет развернут в список.

Вы хотите сохранить ссылку на хэш.

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

Ответ №2:

Или вы можете использовать этот подход:

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