HTML::Templateをデフォルトのまま使うと痛い目を見る

すぐに忘れるのでメモ。
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