Perl Template Toolkit: можете ли вы получить доступ к хеш-ключам с именами через дефис?

Набор инструментов для шаблонов 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 (\)

Запасной план

Я вижу два варианта решения проблемы:

  1. Измените ключи, чтобы убрать дефисы.
  2. Создайте еще один хэш-адрес, с помощью которого можно будет получить доступ к именам с дефисом, который переупаковывает имена без дефисов. Например.:

Добавьте в Perl:

$intermediateHashref = {
    'unhyphenatedKey' => $hashref->{'hyphenated-key'},
}

Изменить шаблонный файл:

1. [% hashref.regularKey %] # Okay
2. [% intermediateHashref.unhyphenatedKey %] # Okay

person Barry Jones    schedule 15.02.2016    source источник
comment
stackoverflow.com/questions/2311303/   -  person bob.faist    schedule 15.02.2016
comment
Подтвержденный; это отвечает на мой вопрос. Спасибо!   -  person Barry Jones    schedule 16.02.2016