gpt4 book ai didi

perl - 如何将 undef 作为参数从 TT 模板传递给对象方法?

转载 作者:行者123 更新时间:2023-12-02 07:15:14 27 4
gpt4 key购买 nike

Template-Toolkit似乎总是想将 undef 插入空字符串。所以像这样的模板:

Result is [% some_object.some_method (1, undef, 2) %]

或者这个:

Result is [% ttvar %]
[% some_object.some_method (1, ttvar, 2) %]

产生对 Perl 的调用,例如:

some_object->some_method (1, '', 2)

当我想要的是:

some_object->some_method (1, undef, 2)

有什么方法可以传递 undef 而不是空字符串?

最佳答案

我添加了另一个答案来展示 EVAL_PERL 如何在 TT 中工作的示例:

use Template;
use DateTime;

my $tt = Template->new( EVAL_PERL => 1 );

my $vars = { foo => 'DateTime', bar => DateTime->now, p => 'print' };

my $file = q{
[% SET hello = 'Hello world' %]
[% PERL %]
print "[% hello %]\n";
print [% foo %]->now, "\n";
[% p %] $stash->get( 'bar' )->ymd;
[% END %]
};

$tt->process( \$file, $vars );

以上输出如下:

Hello world
2009-11-03T15:31:50
2009-11-03

因为 TT 充当预处理器并生成以下 Perl 代码来解释:

print "hello world\n";
print DateTime->now, "\n";
print $stash->get( 'bar' )->ymd;

注意。上一行中的 $stash 由 TT 提供,是对顶级 stash 对象的引用。

/I3az/

关于perl - 如何将 undef 作为参数从 TT 模板传递给对象方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1667553/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com