为什么我的Perl CGI程序显示程序代码而不是输出?

时间:2011-02-09 20:20:05

标签: perl templates module cgi

代码 - TEST.CGI

#!/usr/bin/perl  
use strict;  
use warnings;  

use CGI::FastTemplate;

my $tpl = new CGI::FastTemplate("/some/directory");  
$tpl->no_strict();  
$tpl->define(main    => "test.htm");  
$tpl->assign(TEST_CONTENT=> "Test");  
$tpl->parse(CONTENT   => "main");  
$tpl->print('CONTENT');  

模板文件

< html>  
< head>  
< title>TEST< /title>  
< /head>  

< body>  
$TEST_CONTENT  
< /body>  
< /html>

EXPLAIN

为什么我在浏览器中看不到所需的输出?当我导航到test.cgi文件时,我看到的只是实际的代码,而不是模板。我做错了什么?

1 个答案:

答案 0 :(得分:11)

您正在查看代码而不是程序的输出,因为您尚未将Web服务器配置为执行程序,因此它默认为以text / plain方式提供文件。

如何配置它取决于您使用的服务器软件。例如,请参阅Apache 2.2 CGI docs

其次,shebang线丢失了。该计划应从以下开始:

#!/usr/bin/perl

其中/usr/bin/perl是您希望使用的Perl可执行文件的路径。

此外,并没有解决问题:

  • 您遗失了use strict;use warnings;。在你正在使用的任何Perl程序中都应该有样板文件,因为它们会遇到很多问题。
  • 您的HTML文档没有Doctype,因此会触发quirks mode。在您编写的任何HTML文档中,合适的Doctype都应该是boilderplate。