【问题标题】:Perl CGI using HTML::TemplatePerl CGI 使用 HTML::Template
【发布时间】:2017-08-14 07:08:00
【问题描述】:

我想使用 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 - Web 服务器在充当 网关或代理服务器。

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 配置之间的不同配置有关。有没有人知道这种情况?

编辑

在 Eclipse 中设置 Perl CGI 配置后,脚本会按预期从本地主机运行。但是,从外部源调用页面时的问题仍然存在。所以就像 DaveCross 建议的那样,错误在于 Web 服务器配置而不是 Perl 脚本。

【问题讨论】:

  • 将什么写入 Web 服务器错误日志?如果您从命令行编译程序(使用perl -c),您会看到什么?是否安装了 HTML::Template?都2017年了,为什么还有这么多人写CGI程序? :-(
  • 呵呵,很抱歉我工作的公司仍在使用它...我也更喜欢更现代的东西。我不知道服务器错误日志在哪里,但是当我在 eclipse 中运行 perl 脚本时,我得到以下控制台输出:Content-Type: text/html; charset=utf-8 HTML::Template=HASH(0x5a2f74)。当我使用print $tmpl-&gt;output 时,控制台输出看起来符合要求,但在浏览器中我仍然收到错误消息。
  • @DaveCross 因为没有人正在编写关于如何部署 PSGI 东西的适当的全功能指南。我听说你有一个花哨的博客……想要一些 TUIT? :)
  • @N.Maks - 你的代码可以工作(嗯,模需要-&gt;output 调用,但你已经发现了)。所以问题在于你的程序与你的网络服务器交互的方式。你没有告诉我们它是如何配置的。说“我不知道服务器错误日志在哪里”并不是很有帮助。如果不访问错误日志,您将无法进行严肃的 Web 开发。我相信那里会有有用的线索。
  • @N.Maks 如果你解决了,请回来写一个答案——这样可以帮助其他有同样问题的人。

标签: html perl cgi perl-html-template


【解决方案1】:

在 Perl 脚本中初始化 HTML::Template 对象时

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

我必须指定完整路径而不仅仅是文件名,所以

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

这解决了我的问题。

对于可能感兴趣的人来说,Web 服务是使用 IIS 7 以非常基本和标准的方式设置的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 2014-12-12
    • 2013-05-02
    • 2015-06-26
    相关资源
    最近更新 更多