我已经将一个 Perl CGI 应用程序从一个网络主机移到了另一个。一切运行良好,除了 Template Tookit 出现以下错误:
“模板进程失败:undef 错误 - 这不应该发生在 /usr/lib/perl5/5.8.8/CGI/Carp.pm 第 314 行。”
模板在其他网络主机上运行良好。我在创建模板对象时设置了 DEBUG_ALL 标志,但它没有提供任何关于错误的额外信息,只是加载调试输出。
我不能发布模板源代码,因为里面有很多客户特定的东西。
我写了一个简单的测试模板,效果很好。只是想知道是否有人以前见过这个错误,或者对找到修复它的最快方法有任何想法。
编辑:这是加载和处理模板的代码片段。
my $vars = {};
$vars->{page_url} = $page_url;
$vars->{info} = $info;
$vars->{is_valid} = 0;
$vars->{invalid_input} = 0;
$vars->{is_warnings} = 0;
$vars->{is_invalid_price} = 0;
$vars->{output_from_proc} = $proc_output;
...
my $file = 'clientTemplate.html';
#create ref to hash
use Template::Constants qw( :debug );
my $template = Template->new(
{
DEBUG => DEBUG_SERVICE | DEBUG_CONTEXT | DEBUG_PROVIDER | DEBUG_PLUGINS | DEBUG_FILTERS | DEBUG_PARSER | DEBUG_DIRS,
EVAL_PERL => 1,
INCLUDE_PATH => [
'/home/perlstuff/templates',
],
}
);
$template->process( $file, $vars )
|| die "Template process failed: ", $template->error(), "\n";