Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用HTML::Template的Perl CGI_Html_Perl_Cgi_Perl Html Template - Fatal编程技术网

使用HTML::Template的Perl CGI

使用HTML::Template的Perl CGI,html,perl,cgi,perl-html-template,Html,Perl,Cgi,Perl 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

我想利用 模块,但不知何故,我无法将其设置为正常工作。下面是我正在测试的一个非常简单的代表性代码:

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;
使用严格;
使用警告;
使用CGI;
使用HTML::模板;
my$test=新的CGI;
我的$tmpl=HTML::Template->new(文件名=>'TemplateSimple.HTML');
$tmpl->param(
title=>“测试”,
body=>'这是一个测试,
);
my$out=$test->header(
-类型=>'text/html',
-字符集=>'utf-8'
);
打印美元;
打印$tmpl->输出;
调用页面时,我总是在浏览器显示服务器错误消息时结束:

502-Web服务器在充当服务器时收到无效响应 网关或代理服务器

TemplateSimple.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以非常基本和标准的方式建立的。

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