Как отследить «Процесс шаблона не удалось: ошибка undef» в Perl Template Toolkit? - PullRequest
0 голосов
/ 04 мая 2010

Я перенес приложение 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";

1 Ответ

4 голосов
/ 04 мая 2010

Вы можете попробовать использовать Devel :: SimpleTrace , чтобы получить трассировку стека того, где находится код, когда он сталкивается с ошибкой. Возможно, это поможет вам лучше понять, что происходит.

...