我正在使用perl和Template :: Toolkit生成一些文本。在perl程序中,我定义了一个哈希引用,例如
my $user = { "user-name" => "John" };
并将其传递给Template::Toolkit
,以便使用模板文件生成John
。在我写的模板文件中
[% user-name %]
但不幸的是,user-name
似乎被user
视为减法表达式name
减去Template::Toolkit
)。
为了确认我的怀疑,我查看Template::Toolkit
的{{3}},找到要在变量名中使用的有效令牌,但什么也没找到。
所以我的问题是:
您能否为变量名称提供有效令牌列表
Template::Toolkit
我可以在模板文件中使用一些“转义方法”,以便
perl程序中的变量名可以保留user-name
?
答案 0 :(得分:7)
通常,有效的perl变量是有效的模板工具包变量。
[ A to Z and _ ]
a to z
,0 to 9
和_
(下划线)字符。'-'
符号)。例如:
$user-name
不是有效的perl变量。但
$user_name
有效。
以下是perl解释器为您的代码抛出的内容
$ my $user = { user-name => "John" };
Compile error: Bareword "user" not allowed while "strict subs" in use at (eval 294) line 5.
如果您真的想使用'user-name'
,那么您应该像这样定义
$ my $user = { "user-name" => "John" };
$ my $data = { user => $user };
你应该在你的tt2文件中访问它:
[% user.item('user-name') %]