【问题标题】:Perl - Template Toolkit - How get list of variables in the template?Perl - 模板工具包 - 如何获取模板中的变量列表?
【发布时间】:2013-04-18 16:20:22
【问题描述】:

我将 Perl 与 Dancer 和 Template::Toolkit 一起使用。

我正在尝试创建一个通用例程,该例程将传递一个模板和 HTTP GET/POST 参数。

我需要找到一种方法来获取模板中的变量列表,以便我可以从参数中检索它们,或者在缺少一个或多个时返回错误。

我可以走一条丑陋的正则表达式路线,但我希望有一种更好/更清洁的方式。

所有的模板都是 XML/SOAP,到处都有一些变量。

有什么想法吗?

【问题讨论】:

标签: perl templates dancer


【解决方案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 => {} } }

【讨论】:

  • 这是从哪里来的?我在 Template::Context 的文档中没有看到对 TRACE_VARS 或 variables() 的引用。但它确实有效。 ???
  • @DouglasMauch:来自Template::Context 的template 方法返回一个Template::Document 对象,所以它在documentation for Template::Document 中。我使用了Template::Context,这样我就可以设置TRACE_VARS。
猜你喜欢
  • 1970-01-01
  • 2011-12-26
  • 2020-12-11
  • 2011-11-27
  • 2014-01-08
  • 1970-01-01
  • 2011-12-26
  • 2012-12-23
  • 2013-06-15
相关资源
最近更新 更多