如何在字符串而不是文件上使用Template Toolkit?

时间:2008-11-24 16:46:23

标签: perl template-toolkit

我有一些字符串,我从数据库中提取出来,我想在它们上使用Template Toolkit,但我似乎无法弄清楚如何使用字符串作为TT输入。有什么提示吗?

谢谢!

-fREW

3 个答案:

答案 0 :(得分:11)

文档说明:

  

进程($ template,\%vars,$ output,%options)

     

调用process()方法来处理模板。第一个参数表示输入模板为以下之一:相对于INCLUDE_PATH的文件名,如果已定义; 对包含模板文字的文字字符串的引用; ...

       # text reference
       $tt->process(\$text)
           || die $tt->error(), "\n"

答案 1 :(得分:4)

来自docs

# text reference
$text = "[% INCLUDE header %]\nHello world!\n[% INCLUDE footer %]";
$tt->process(\$text)
    || die $tt->error(), "\n";

(看起来我应该在发布之前刷新页面。)

答案 2 :(得分:2)

您可能会发现String::TT是一种更好的替代方式。来自豆荚的一些戏弄者......

use String::TT qw/tt strip/;

sub foo {
   my $self = shift;
   return tt 'my name is [% self.name %]!';
}

sub bar {
   my @args = @_;
   return strip tt q{
      Args: [% args_a.join(",") %]
   }
}

和...

my $scalar = 'scalar';
my @array  = qw/array goes here/;
my %hash   = ( hashes => 'are fun' );

tt '[% scalar %] [% scalar_s %] [% array_a %] [% hash_h %]';