有没有人有关于如何使用perl模板模块的完整解决方案/演练?

时间:2016-04-13 13:11:29

标签: string perl template-engine

@neuhaus在template-toolkit.org网站上向我指出new documentation

这是来自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

我现在只是在测试文件中运行它,以防你想知道。

3 个答案:

答案 0 :(得分:3)

Template documentationprocess()方法的定义说明了这一点:

  

第一个参数表示输入模板为以下之一:文件名   相对于INCLUDE_PATH,如果已定义;对文本字符串的引用   包含模板文本;或文件句柄引用(例如   IO::Handle或子类)或GLOB(例如\*STDIN),   模板可以阅读。

如果您传递一个字符串,则假定它是包含模板的文件的名称。如果要传递包含实际模板的字符串,则需要将引用传递给字符串。

所以你的行:

$template->process($text, $vars)

需要:

$template->process(\$text, $vars)

错误消息是一个很好的线索。它告诉你,它无法找到一个名为&#34的文件;这是字符串编号[%num%]。"。

答案 1 :(得分:2)

答案 2 :(得分:2)

您可能会发现Template::Manual::IntroTemplate::FAQ很有用,并且包含Template

的优秀教程

Template::Tutorial

的门户网站

该模块在template-toolkit.org有自己的网站,但那里的文档只是安装包中POD的镜像