0

CGI で HTML::Template 関数を実行できません。

ここで見つけた簡単なチュートリアルに従っています: http://metacpan.org/pod/HTML::Template

サーバーのホームパスにtest.tmplとして新しいファイルを作成しました。

frt.cgi という名前の新しいファイルを作成しました ... (それが問題なのですか? ファイル拡張子が異なるはずですか??)

#!/usr/local/bin/perl -w
use HTML::Template;

# open the html template
my $template = HTML::Template->new(filename => '/test.html');

# fill in some parameters
$template->param(HOME => $ENV{HOME});
$template->param(PATH => $ENV{PATH});

# send the obligatory Content-Type and print the template output
print "Content-Type: text/html\n\n", $template->output;


ホストが提供する perl のプログラム パスを反映するように 1 行目を変更しました。-w が何をするのかわかりません。これを使用して、または使用せずに試したことを知っているだけです。また、コードを次のように少し変更してみました。

use warnings;
use strict;
use CGI qw(:standard);
use HTML::Template;


検索しました...
https://stackoverflow.com/search?q=HTML%3A%3ATEMPLATE+&submit=search
https://stackoverflow.com/search?q=HTML%3A%3ATEMPLATE
https://stackoverflow .com/search?q=HTML%3A%3ATEMPLATE+PERL&submit=検索

それでも答えは見えません。特別なタイプが必要かもしれないと思ったので、Googleで.TMPL Encodingを検索しました。助けてください。

4

2 に答える 2

0

まず、間違ったパスを指定した可能性があります。/test.html を test.html に変更してください。また、システムに $ENV{HOME} 変数がない可能性があるため、フラグ die_on_bad_params を 0 に設定します。

my $template = HTML::Template->new(
filename => 'test.html',
die_on_bad_params => 0,
);

また、chmod 755 で Perl ファイルを実行可能としてマークすることを忘れないでください。

use warnings;オプション -w は Perl に警告を有効にさせるので、後で書く意味がありません。次のように、モジュール B::Deparse を使用して Perl コマンド ライン オプションの動作を確認できます ($^W 変数は警告を無効/有効にします)。

perl -w -MO=Deparse -e "print;"

これは次のように表示されます。

BEGIN { $^W = 1; }
print $_;
于 2012-12-15T00:41:39.683 に答える
0

サーバー ログを見ると、おそらく次のようなエラー メッセージが表示されます。

HTML::Template->new() : Cannot open included file /test.html : file not found.

生成されたドキュメントに関連する URI ではなく、ファイル システム上のパスを指定する必要があります。

于 2012-12-14T22:20:14.763 に答える