以下代码因var.undef错误而死亡,因为未定义var
。如果我将STRICT
选项更改为0,但我想要严格检查,除非它在模板中进行[% IF var %]
检查,否则它会起作用。我该怎么做?
use strict;
use warnings;
use Template;
my $t = Template->new(STRICT => 1) || die Template->error();
my $template = '[% IF var %][% var %][% END%]';
my $output = '';
$t->process(\$template, {}, \$output) || die $t->error(), "\n";
print "$output\n";
答案 0 :(得分:4)
您发送的空哈希引用不包含您要求模板显示的var
变量。
您可以签入Perl代码来设置一个合理的默认设置(在本例中,我只是将其硬编码到process()
的调用中):
$t->process(\$template, {var => 55}, $output) || die $t->error(), "\n";
输出:
55
...或者,如果var
变量未在途中发送(即未定义),则可以告诉模板设置自己的默认默认值:
my $template = '[% DEFAULT var = "sane" %][% IF var %][% var %][% END%]';
输出:
sane