#!/usr/bin/perl #カウンター #ログファイル一つにまとめる #読み込みファイルcount3.datはCGI設置フォルダと同じところに設置 #現在の時刻とIPアドレスを読み込み ($sec,$min,$hour,$day,$mon,$year,$wday) = localtime(time); $nitiji = sprintf("%04d年%02d月%02d日",$year +1900,$mon +1,$day); $addr = $ENV{'REMOTE_ADDR'}; #ファイルオープン open(IN, "count3.dat"); chomp( @count = ); close(IN); #今日始めての訪問か判定する $today = 0; foreach(@count ){if( /$nitiji\t$addr/){ $today = 1; } } #今日始めての訪問の場合 if ( $today == 0 ){ #一日前の日付けとカウント数はsplice関数を使って[3]4番目に押入 if ( $nitiji ne $count[2] ){ $rec = "$count[2]\t$count[1]"; splice( @count,3,0,$rec ); $count[1] = 0; $count[2] = $nitiji; } #カウントアップ $count[0]++; $count[1]++; #アクセスログはsplice関数を使って[4]5番目に押入 $rec2 = "$nitiji\t$addr"; splice( @count,4,0,$rec2 ); #アクセスログの記憶数 $data_max = 15; if ($#count > ($data_max +3)){ $#count = $data_max +3; } # カウント書き込み open(OUT,">count3.dat"); foreach $rec ( @count ) { print OUT "$rec\n"; } close(OUT); } #2回目以降訪問の場合 else { open(COUNTIN,"count3.dat") ; @count = ; close(COUNTIN); } # 出力ブラウザにカウントアップした値を表示。 #昨日の件数 ( $yestaday,$yestaday_count ) = split( /\t/,$count[3] ); #今日の件数 $today_count = $count[1]; print <<"HTML"; Content-type: text/html
日付件数
総数$count[0]
今日のカウント$today_count
昨日のカウント HTML #昨日のカウント数がない場合の処理 if ($yestaday_count eq $addr ){ print ' '; } else { print "$yestaday_count\n";} print <<"END";
END exit; __END__