[Perl] => [CGI]



HTML::Templateを使用すればHTMLファイルをテンプレートから読み込むことができるようになりますので、スクリプトとHTMLを切り離すことができるようになります。HTML::Templateが読み込みテンプレートファイルでは、変数を入れるために以下のようなタグを使用できます。

<TMPL_VAR> <TMPL_LOOP> <TMPL_INCLUDE> <TMPL_IF> <TMPL_ELSE> <TMPL_UNLESS>

#テンプレートタグの使用例 <TMPL_VAR NAME=変数名>

[TMPL_VAR 使用例]
use HTML::Template;


#HTML::Templateオブジェクトの作成。HTML::Templateではテンプレートに
#存在しない変数に値を設定しようとすると、デフォルトでdieするので、
#オプションdie_on_bad_paramsを0にすると便利。
my $template = HTML::Template->new(filename => './template.html', die_on_bad_params => 0);


#HTMLテンプレートに設定されているパラメータを読み込み
my @template_param = $template->param();


#テンプレートの変数それぞれに値を入れる
foreach my $key (@template_param) {
    $template->param( $key => $db_ref->{$key} );
}

#ヘッダーを出力
print $session->header(-charset=>'EUC-JP');

#結果を出力
print $template->output;


[TMPL_LOOP 使用例]
<TMPL_LOOP NAME=trial>
<tr>
<td><TMPL_VAR NAME=cname></td>
<td><TMPL_VAR NAME=company></td>
<td><TMPL_VAR NAME=email></td>
<td><TMPL_VAR NAME=tel></td>
<td><TMPL_VAR NAME=order_date></td>
<td><TMPL_VAR NAME=expire></td>
</tr>
</TMPL_LOOP>

my @trial;
while (my $data = $sth->fetchrow_hashref) {
    push(@trial, $data);
}

my $template = HTML::Template->new(filename => $tmpl_file);
$template->param( 'trial' => \@trial ); #データはリファレンスで渡す
[補足]

FORMのSELECTに関してはTMPL_VARとpopup_menu()を使用するのがもっともよいらしい。TMPL_IFなどでは条件が複雑になるので、逆にソースが見づらくなります。

$template->param( $key => popup_menu(-name => $key, -values => ['Standard', 'Pro'], defalut => $db_ref->{$key}) );


テンプレートにて使用する変数は大文字小文字の区別をしないため、これを区別するようオブジェクトを作成する際に、case_sensitive => 1をセットすることをおすすめします。

[参考記事]

popup_menu - HTMLの選択フィールドを表示する

広告
KENTとつくる!ワンランク上のPerl/CGIプログラミン KENTとつくる!ワンランク上のPerl/CGIプログラミン
¥ 2,940 / 売り上げランク: 5127 / 391 ページ

自分は、CGI/Perlについては、ほとんど知らないのですが、自分のホームページに検索エンジン型リンク集を設置したくて、本書を購入しました。
著者のホームページ「KENT WEB」には、よくお世話になっているのですが、CGI/Perlについての知識がなくても、本書に記述されているプログラミングを必要な部分だけ変更して、そのままファイルをサーバーにアップロードすれば、掲示板や、検索エンジン型リンク集等を設置し、カスタマイズすることができます。
ただ、自分の場合、CGI/Perlの知識がほとんど無い状態で本書を利用したため、途中バグが出てしまって、本書だけでは解決できなくて、当初の目的の検索エンジン型リンク集を設置するのに、多少時間がかかってしまいました。
また、自分流にカスタマイズしたくて、いろいろいじったのですが、難しくて、自力で解決するのは困難でした。
結局目的は達成できたのですが、それは、著者のホームページ「KENT WEB」の「サポートコーナー」で助けてもらったからです(感謝)。
ということで、著者のホームページ「KENT WEB」の「サポートコーナー」と併せて本書を利用すれば、CGI/Perlの知識を持ち合わせていない方でも、それほど苦労せずに、ある程度好みのホームページを作ることができるのではないか・・・と個人的には思っております。
結局「KENT WEB」に感謝!ってことですね。

CGI&Perlポケットリファレンス (Pocket reference) CGI&Perlポケットリファレンス (Pocket reference)
¥ 2,079 / 売り上げランク: 27573 / 463 ページ

リファレンス本として非常に重宝している。
オライリーのPerl関連本をバラバラに読む必要なく、全部まとめてくれている感じ。
モジュール関係のレベルまでは記載されていないが、どうやるんだったっけ、と思ったら必ずこれを参照している。

欲を言えば、改定時に末尾のindexも修正して欲しいところ。
warn が warm って・・・。

初めてでもカンタン すぐに使えるCGI 初めてでもカンタン すぐに使えるCGI
¥ 2,310 / 売り上げランク: 39629 / 295 ページ

CGIを勉強するには、やはり、解りやすい完成品をいじることから始めたほうが良いと思われます。現物の自動車をぶっ壊して、パーツを吟味して構造を覚えていくような本。すぐに使えるCGIが詰まったCD−ROM付きなので、「習うよりも慣れろ」式に、覚えていける本です。カスタマイズの仕方も、ディレクトリ構造も丁寧です。CGIに鳥肌が立っちゃったときに、読んでみて下さい。胃炎が治まる感じ。