※このサンプルの解説は、「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'>"; }
◆実行結果について

上記のサンプルを「gcnts6.cgi」という名前で保存して実行してみてください。
(注意)
サーバーでテストする場合は、前もってアクセスログを記録するための、何もデータの入っていない「gcnts6f.cgi」という名前のファイルをパーミッション「666」で必ず作成しておいて下さい。

実行結果はこちらをクリックしてください。
なお、実行結果については、各々のサーバーの環境、ユーザーの環境にによって内容は変わってきます。


page update:2010/01/23 20:32

Copyright (c) 2000-2009, all Rights Reserved & Produced by atom