すぐに忘れるのでメモ。
HTML::Templateをデフォルトのまま使うのはかなりやっかい。
テンプレートで定義していないパラメータも、HTML::Templateに与えてしまうとエラーが出る。
テンプレートにセットする値は、事前に不要な値を削除する必要があんのかなと思ってたけど、下記のオプションを与えると回避できる。
下記のように、die_on_bad_paramsに0をセット(デフォルトでは1)。これデフォルトで0にしとけよって思う。
my $template = HTML::Template->new( filename => 'file.tmpl', 'die_on_bad_params' => 0, );
それ以外にもいくつかあるので、詳細は下記参照
http://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%2FHTML%3A%3ATemplate
他には、下記のようにすると、テンプレートのパラメータ変数の大文字、小文字を区別します。
my $template = HTML::Template->new( filename => 'file.tmpl', 'case_sensitive' => 1, );
テンプレート側では、タグの無効化などをするために、TMPL_VARの中で下記のように、ESCAPE=HTMLを指定できます
<TMPL_VAR ESCAPE=HTML NAME="PARAM">
それ以外にも、URLのエスケープを行ってくれるESCAPE=URLや、パラメータで値が無かった場合のデフォルト値を決めるDEFAULT=devilや、JavaScript用の"ESCAPE=JS"があります。
http://perldoc.jp/docs/modules/HTML-Template-2.6/HTML/Template.pod
http://search.cpan.org/~samtregar/HTML-Template/Template.pm