グラフィカルアクセスカウンター用CGI
count2.cgiを作成する。
現在までの訪問者数をcount.logから$countに読込んで$countを1増やして
count.logに保存するところは文字のアクセスカウンターと同じ。
#!/usr/local/bin/perl
open(IN,"count.log");
$count = <IN>;
close(IN);
$count++;
open(OUT,">count.log");
print OUT $count;
close(OUT);
$countには現在までの訪問者数が保存されている。
これを1桁づつに分割するためにsplit文を使う。split文は、
配列=split(/区切り文字/,分割する文);
のように記述して「分割する文」を「区切り文字」を目安に分割して、
分割された個々の要素を配列とする。
数字を分割するには、
@number=split(//,$count);
とする。ここでは区切り文字は空文字である。
分割された結果は@numberという配列に保存される。
いま$countに132という数字が代入されているとすると、@numberという配列に、
@number=(1,3,2);
という代入が実行される。
つまり、
$number[0]の値は1
$number[1]の値は3
$number[2]の値は2
となるわけである。
(
補足事項
)
112人の場合に、数字の画像でカウンターを表示するには、HTMLに、
<IMG SRC="1.gif"><IMG SRC="3.gif><IMG SRC="2.gif">
という結果を送り返せばよい。
このような結果をHTMLに送り返すために、foreach文を使う。foreachは、
foreach 変数 (配列){変数に対する処理}
のように使い、配列の要素が1つづつ変数に代入され{ }の中の文が実行される。
グラフィカルアクセスカウンターでは、
foreach $a (@number) {print " <IMG SRC=\"$a.gif\">"; }
と記述する。
これによって、まず、@numberの1つ目の要素1が$aに代入され、
{ }の中で<IMG SRC="1.gif">という結果が
このプログラムを呼び出した部分のHTMLに埋め込まれる。
「\"」はダブルクォーテーション「"」で囲まれた文の中で「"」を使う場合には
前に\を付ける必要があるため。
次に@numberの2番目の要素の3が$aに代入され、{ }内が実行され、
<IMG SRC="3.gif">という結果が送り返される。
最後に@numberの3番目の要素の2が$aに代入され、{ }内が実行され、
<IMG SRC="2.gif">という結果が送り返される。