Почему моя программа Perl CGI показывает программный код, а не вывод? - PullRequest
3 голосов
/ 09 февраля 2011

КОД - 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>

ОБЪЯСНИТЬ

Почему в браузере не отображается нужный вывод?Когда я перехожу к файлу test.cgi, я вижу только код, а не шаблон.Что я делаю не так?

1 Ответ

11 голосов
/ 09 февраля 2011

Вы видите код вместо выходных данных программы, потому что вы не настроили свой веб-сервер для выполнения программы, поэтому по умолчанию файл обслуживается как text / plain.

Способ его настройки зависит от используемого вами серверного программного обеспечения. Например, смотрите документацию Apache 2.2 CGI .

Во-вторых, линия Шебанга отсутствует. Программа должна начинаться с:

#!/usr/bin/perl

Где /usr/bin/perl - это путь к исполняемому файлу Perl, который вы хотите использовать.

Дополнительно, и не способствует возникновению проблемы:

  • Вам не хватает use strict; и use warnings;. В любой Perl-программе, которую вы используете, должен присутствовать шаблон, так как они улавливают много проблем.
  • Ваш HTML-документ не имеет Doctype, поэтому он вызывает режим причуд . Подходящий Doctype должен быть в любом документе HTML, который вы пишете.
...