[英]Perl CGI using 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-Web服务器在充当网关或代理服务器时收到无效响应。
<!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脚本。
在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建立的,它是非常基本和标准的方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.