这是来自CPAN的代码,我一直试图运行/搞乱:
#!/usr/bin/env perl
use lib ('./t/lib/');
use strict;
use warnings;
use Template;
use Test::More tests => 1;
my $text = "This is string number [% num %] .";
my $vars = {
num => "one",
};
my $template = Template->new();
$template->process($text, $vars)
|| die "Template process failed: ", $template->error(), "\n";
ok(defined $text, 'Returns something');
我收到以下错误:
Template process failed: file error - This is string number [% num %] . : not found
我现在只是在测试文件中运行它,以防你想知道。
答案 0 :(得分:3)
Template documentation中process()
方法的定义说明了这一点:
第一个参数表示输入模板为以下之一:文件名 相对于
INCLUDE_PATH
,如果已定义;对文本字符串的引用 包含模板文本;或文件句柄引用(例如IO::Handle
或子类)或GLOB
(例如\*STDIN
), 模板可以阅读。
如果您传递一个字符串,则假定它是包含模板的文件的名称。如果要传递包含实际模板的字符串,则需要将引用传递给字符串。
所以你的行:
$template->process($text, $vars)
需要:
$template->process(\$text, $vars)
错误消息是一个很好的线索。它告诉你,它无法找到一个名为&#34的文件;这是字符串编号[%num%]。"。
答案 1 :(得分:2)
答案 2 :(得分:2)
您可能会发现Template::Manual::Intro
和Template::FAQ
很有用,并且包含Template
Template::Tutorial::Web
使用模板工具包生成Web内容 Template::Tutorial::Datafile
使用Template Toolkit创建数据输出文件 该模块在template-toolkit.org
有自己的网站,但那里的文档只是安装包中POD的镜像