[このスクリプトのソース]

#!/usr/bin/perl

# イメージカウンタ貼り付け用ソース…n=1〜n=$maxまで以下のタグを貼り付ける
# <img SRC="http://fujikoweb.net/cgi-bin/img_cnt.cgi?n=1" width="15" height="20">

require 'jcode.pl';
require 'cgisub.pl';
$max = 7; # 桁数
$imgdir = "number";
$cnt_file = 'img_cnt.txt';
$lookyes = 1; # ロックを使うなら1、不使用なら0…cgisub.pl への指示

&form_read(*init);
foreach $x (%init) {
$value = $init{$x};
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
$value =~ s/&/&amp;/g;
$value =~ s/"/&quot;/g;
$value =~ s/</&lt;/g;
$value =~ s/>/&gt;/g;
jcode'convert(*value, $kan_cord);
$init{$x} = $value;
}
$a = $init{'n'}; # 1

# 各回(イメージタグの数分)の指示に対してオープンする
$number = &file_open($cnt_file);

# グラフィカルカウンタのために数を配列に代入する
@allCount = &cut_num($number); # 数値の前部に0を付して桁を揃え配列へ
$a--; # 配列の[0]から始めるため…
$img = "$imgdir/$allCount[$a].gif"; # 画像格納ディレクトリのパスを付す
open(IMG,"$img"); # 画像ファイルをオープンする
@img_data = stat($img); # 画像情報取得(配列8番目はサイズ情報)
# ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat($filename)
$byte = $img_data[7];
print "Content-type: image/gif\n";
print "Content-length: $byte\n\n";
print <IMG>;
close(IMG);

# 最後の呼出し時のみカウントUPし保存する
if($init{'n'} == $max){
$number = &id_count($cnt_file);
}

# アクセス数を、一桁の数字に分割し、桁数に合せて前部に0を付すサブルーチン
sub cut_num{
local($id) = @_;
local(@id) = split(//,$id);
while($#id+1 < $max){
unshift(@id,0)
}
return @id;
}

# ---カウンタ$number = &id_count('img_cnt.txt');

sub id_count{
local(@id_tline,$line_top,@s_parts,$idcount);
local($idfile) = @_;
open(FILE, "$idfile");
@id_line = <FILE>;
close(FILE);
@line_top = ();
foreach $i(@id_line) {
chomp $i;
push(@line_top,$i);
}
chomp $line_top[0];
$idcount = $line_top[0];
if ($idcount eq ""){$idcount = 1;}
else {$idcount++;}
# 保存スクリプト
open(FILE, "+<$idfile");
if (!&us_lock(*FILE)){
close(FILE);
&error_msg("書込み衝突です!",$my_mail);
}
seek(FILE,0,0);
@id_tline = <FILE>;
@id_tline = (); # 配列を初期化して積算させない
unshift(@id_tline,$idcount);
seek(FILE,0,0);
print FILE @id_tline;
truncate(FILE,tell(FILE));
&un_lock(*FILE);
close(FILE);
return($idcount);
}

# ---ファイルオープン

sub file_open{
local($txt_file) = @_;
local($files);
open (FILE , "$txt_file") || die "ファイルを開けません! $!";
$files = <FILE>;
close(FILE);
return $files;
}