Perl CGI с использованием HTML::Template

Я хотел бы использовать HTML::Template модуль, но почему-то я не могу настроить его на работу должным образом. Вот очень простой репрезентативный код, на котором я тестирую:

use strict;
use warnings;

use CGI;
use HTML::Template;

my $test = new CGI;
my $tmpl = HTML::Template->new(filename => 'TemplateSimple.html');

$tmpl->param(
    title => 'Test',
    body  => '<p>This is a test</p>',
);

my $out = $test->header(
    -type    => 'text/html',
    -charset => 'utf-8'
);


print $out;
print $tmpl->output;

При вызове страницы я всегда получаю в браузере сообщение об ошибке сервера:

502 - веб-сервер получил неверный ответ, выступая в качестве шлюза или прокси-сервера.

TemplateSimple.html

<!DOCTYPE html>
<html lang="de">
    <head>
        <meta charset="utf-8">
        <title><TMPL_VAR NAME=title></title>
        <link rel="SHORTCUT" ICON href="favicon.ico" />
    </head>

    <body>
        <TMPL_VAR NAME=body>
    </body>
</html>

Я должен использовать CGI, потому что я хочу обрабатывать пользовательский ввод на веб-странице, но я хотел бы определить базовую структуру HTML в шаблоне, где я могу вставлять сегменты кода по мере необходимости.

редактировать

Я думаю, что это может быть связано с различными конфигами между локальным Perl (запускается из eclipse, который работает нормально) и конфигурацией Perl CGI. Кто-нибудь знает о таком случае?

редактировать

После настройки конфигурации Perl CGI в Eclipse сценарий запускается, как и ожидалось, с локального хоста. Однако проблема при вызове страницы из внешнего источника сохраняется. Поэтому, как предложил DaveCross, ошибка заключается в конфигурации веб-сервера, а не в скрипте Perl.

1 ответ

Решение

При инициализации HTML::Template объект в скрипте Perl

my $tmpl = HTML::Template->new(filename => 'TemplateSimple.html');

Я должен был указать полный путь, а не только имя файла, поэтому

my $tmpl = HTML::Template->new(filename => 'C:/inetpub/wwwroot/Project/TemplateSimple.html');

Это решило мою проблему.

Для кого это может быть интересно, веб-сервис был настроен с IIS 7, очень простым и стандартным способом.

Другие вопросы по тегам