※このサンプルの解説は、「CGI(Perl)の解説」をすべて読み終えてる方を前提としています。
■ カウンタのゼロ埋め
今までに作ったカウンタの表示はカウンタの数値をそのまま表示させるだけでした。
その都度、桁数が変ったり、そのままでは素っ気ない気もしますよね。
そこで、今回はそれらのカウンタ値の頭をゼロ埋めしましょう。
と言っても別段変わったことはありません、今までに習った「sprinf()」関数を使い整形すれば、複雑な処理を作る必要もありません。
- 【 解 説 】
-
まず、カウンタを取得する処理は次のようになっています。
(グラフィックカウンタの例です。)
$filnam = "gcntsf.cgi"; open(FP,"<$filnam"); $totalc = <FP>; close(FP);
この場合、カウンタ値は「$totalc」に入っています。
そこで、例えばゼロ埋めされた6桁の数字にするなら取得した「$totalc」を次のように記述するだけです。
$totalc = sprintf("%06d", $totalc);
では、上記の方法でこの前の「グラフィック型のアクセスカウンタ」を変更してみます。
なお、今回のサンプルでは排他制御(同時書き込み時の制御)は行っていません。
Windows環境の排他制御については「CGI(Perl)の予備知識」−「ファイル書き込みの排他制御」をご参照下さい。
- 【記述サンプル】
- #!/usr/bin/perl $filnam = "gcnts6f.cgi"; open(FP,"<$filnam"); $totalc = <FP>; close(FP); $totalc++; $filnam = "gcnts6f.cgi"; open(FP,">$filnam"); print FP "$totalc"; close(FP); $totalc = sprintf("%06d", $totalc); $ketat = length($totalc); for $i (0..$ketat-1){ $suji = substr($totalc, $i, 1); print "<img src='$suji.gif'>"; }