#!/usr/bin/perl #カウンター #現在の時刻と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(ACCESSFILE, "access.dat"); @accesslog = ; close(ACCESSFILE); #今日始めての訪問か判定する(一日に一カウントする) $today = 0; foreach ( @accesslog ) { if( /$nitiji/ ){ if ( /$addr/ ){ $today = 1; } } } if ( $today == 0 ){ #データ保存用ファイルcount.datを同じフォルダにいれておく。 # 今までのカウンタ数を読み込んで変数に代入 open(IN,"count.dat") ; $count = ; close(IN); #カウントアップ ++$count; # カウント書き込み open(OUT,">count.dat"); print OUT "$count"; close(OUT); open(ACCESSFILE, ">access.dat"); unshift (@accesslog, "$nitiji\t$addr\n" ); print ACCESSFILE @accesslog; close(ACCESSFILE); } else { open(COUNTIN,"count.dat") ; $count = ; close(COUNTIN); } # 出力ブラウザにカウントアップした値を表示。 #「printf」は書式を付けてプリントする命令。 #「f」は書式(フォーマット)の意味。 #"%04d"が書式の指定です。 #"%04d"と書くと「4桁で先頭に0を付けて値を入れる」という意味。 print "Content-type: text/html\n\n"; print "\n"; printf("%04d\n", $count); print "\n"; exit; __END__