Perl
モジュールを利用しようとしていますがHTML::Template
、ドキュメントによるとHTML
、マークアップの周りに大なり/小なりの代わりにコメントを使用できると書かれていますが、うまくいきません。
HTML::Template の perldoc から
有効な HTML が大好きで、テンプレートを有効な HTML 構文に準拠させたい場合は、必要に応じて HTML コメントの形式でテンプレート タグを入力できます。これは、HTML::Template 処理の前にテンプレートの HTML 構文を検証したい HTML 作成者や、DTD に精通した編集ツールを使用する HTML 作成者にとって役立つかもしれません。
<!-- TMPL_VAR NAME=PARAM1 -->
これを試すと、Apache ログに次のメッセージが表示されます。
[Tue Jul 03 19:24:23 2012] [error] [client ::1] HTML::Template: 存在しないパラメータ 'fname' を設定しようとしています - このパラメータ名はテンプレート ファイル内の宣言と一致しません: (die_on_bad_params => 1) /var/www/cgi-bin/form.cgi 行 90、リファラー: .... getcontactinfo.html
メソッドにオプションdie_on_bad_params => 0
を設定するHTML::Template->new
と、テンプレート名のコメント形式が機能するように見えますが、これがこれを達成する正しい方法であることを誰でも確認できますか?
編集#1
実際のコードの一部を次に示します。
.html テンプレート ファイルから
<tbody>
<tr> <td>First Name: </td> <td><!-- TMPL_VAR NAME=FNAME --> </td> </tr>
<tr> <td>Name: </td> <td><!-- TMPL_VAR NAME=NAME --> </td> </tr>
<tr class="alt"> <td>Email: </td> <td><!-- TMPL_VAR NAME=EMAIL --> </td> </tr>
<tr> <td>Affiliation: </td> <td><!-- TMPL_VAR NAME=AFFILIATION --> </td> </tr>
私の .cgi スクリプトから
my $template = HTML::Template->new(filename => '/var/www/html/acknowledge.html', die_on_bad_params => 0);
$template->param(FNAME => $firstName);
$template->param(NAME => $firstName . " " . $lastName);
$template->param(EMAIL => $email);
$template->param(AFFILIATION => $affiliation);