Набор инструментов для шаблонов Perl
Доступ к ключам хеш-таблицы с переносом
Вопрос
Можете ли вы получить доступ к хеш-ключам с именами через дефис?
Например, если вы объявите следующий хэш-адрес в Perl:
$hashref = {
'regularKey' => 1,
'hyphenated-key' => 1,
};
А затем попробуйте получить доступ к записям через Template Toolkit:
1. [% hashref.regularKey %] # Okay
2. [% hashref.hyphenated-key %] # Generates error
Ошибка гласит:
Argument "" isn't numeric in subtraction (-) at myTemplatizedFile line 2.
Есть ли способ обойти предположение инструментария о том, что дефисы предназначены для вычитания?
Что я пробовал
Я попытался экранировать дефис с помощью обратной косой черты, но при обработке шаблона возникает такая ошибка:
error - parse error - myTemplatizedFile line 138: unexpected token (\)
Запасной план
Я вижу два варианта решения проблемы:
- Измените ключи, чтобы убрать дефисы.
- Создайте еще один хэш-адрес, с помощью которого можно будет получить доступ к именам с дефисом, который переупаковывает имена без дефисов. Например.:
Добавьте в Perl:
$intermediateHashref = {
'unhyphenatedKey' => $hashref->{'hyphenated-key'},
}
Изменить шаблонный файл:
1. [% hashref.regularKey %] # Okay
2. [% intermediateHashref.unhyphenatedKey %] # Okay