HTMLテンプレートファイルを使う
 
複雑なHTMLをCGIで出力するときには、HTMLを外部ファイルとして作っておき、クライアントにHTMLを返す(CGIでは標準出力に出力)ときに、それを読み込むようにすると、CGIプログラムがすっきりします。ただし、ファイルのI/Oが増えるため、サーバの負担は大きくなります。

テンプレートファイルには、CGIで展開する変数を通常の文章では使われないような、もちろんHTMLタグなどにも使われない特別なルールで書いておきます。ここでは展開する変数を
 

__%変数%__


とすることにします。例えば、次のようなHTMLのテンプレートを定義します。
 
 
sample_html.tmpl
<HTML>
<HEAD>
<TITLE>あるテンプレート</TITLE>
</HEAD>
<BODY>
ここ→__%Val1%__←に変数1<BR>
ここ→__%Val2%__←に変数2<BR>
</BODY>
</HTML>

CGIでは、Val1, Val2を'苺'、'林檎'に置き換えます。

[サンプルプログラムの実行]
 
 
template.cgi
#!/usr/bin/perl
#
# template.cgi
#
# (C) Kaoru Fujita
#
use lib './lib';
require 'util.pl';

#
# 定数
#
$TmplLoc = './templates';
$Template = $TmplLoc.'/sample_html.tmpl';
%Vals = ('Val1'=>'苺', 'Val2'=>'林檎');

open(FH, "<$Template")
        or exitError("テンプレートファイルがオープンできません: $Template");

print qq(Content-type: text/html\n\n);

while (<FH>) {
        s/__%(.+?)%__/$Vals{$1}/g;
        print;
}

exit(0);

#--End of template.cgi