Perl - Template Toolkit - Как получить список переменных в шаблоне?

Я использую Perl с Dancer а также Template::Toolkit,

Я пытаюсь создать общую подпрограмму, которой будет передаваться шаблон и параметры HTTP GET/POST.

Мне нужно найти способ получить список переменных в шаблоне, чтобы я мог извлечь их из параметров или вернуть ошибку, если одна или несколько отсутствуют.

Я могу пойти по уродливому маршруту регулярных выражений, но я надеялся на лучший / более чистый путь.

Все шаблоны являются XML/SOAP с несколькими переменными здесь и там.

Есть идеи?

1 ответ

Решение

Если вы включите TRACE_VARS вариант в контексте шаблона, то вы можете использовать variables метод, чтобы получить хэш всех значений, к которым осуществляется доступ.

Этот код показывает краткий пример

use strict;
use warnings;

use Template::Context;
use Data::Dump;

my $template = '[% person.name %] <[% person.email %]>';

my $context = Template::Context->new(TRACE_VARS => 1);
my $compiled = $context->template(\$template) or die $context->error;
my $variables = $compiled->variables;

dd $variables;

выход

{ person => { email => {}, name => {} } }
Другие вопросы по тегам