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

Luk*_*uke 3 perl templates cgi module

代码 - 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');  
Run Code Online (Sandbox Code Playgroud)

模板文件

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

< body>  
$TEST_CONTENT  
< /body>  
< /html>
Run Code Online (Sandbox Code Playgroud)

说明

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

Que*_*tin 11

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

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

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

#!/usr/bin/perl
Run Code Online (Sandbox Code Playgroud)

/usr/bin/perl您希望使用的Perl可执行文件的路径在哪里.

此外,并没有造成这个问题:

  • 你缺少use strict;use warnings;.在您使用的任何Perl程序中都应该有样板,因为它们会遇到很多问题.
  • 您的HTML文档没有Doctype,因此它会触发怪癖模式.在您编写的任何HTML文档中,合适的Doctype都应该是boilderplate.

  • 这是Web服务器配置问题.如果您无权访问服务器配置,则需要让系统管理员为您执行此操作. (2认同)