#!/usr/bin/perl

# 画像連結ライブラリ取込み
require './gifcat.pl';

# 総カウント数の桁数
$sougoulen= 3;

# 本/昨日カウント数の桁数
$sublen= 3;



# 総カウント数用GIF画像のディレクトリ
$sougougif = "./sougougif";

# 本/昨日カウント数用GIF画像のディレクトリ
$subgif= "./subgif";

# 引数データを入れる
$insuu = $ENV{'QUERY_STRING'};

#引数を分解（総合、今日、昨日を区別）とリンク元
($mode,$linkmoto)=split(/&/,$insuu);

#print "Content-type: text/html\n\n";

#----------------------------------------------------------
# 日時を取得
&hiduke();
# 今の年月日時分秒を取得
&now();
# ホストを取得
&host();
# アドレスを取得
&addr();
# リンク元を取得
&linkmoto();
#ユーザエイジェントを取得
&user_agent();
# カウンタ処理
&count();
# カウンタ連結表示
&countview();
# 生ログ処理
&namalog();
# リンク元ランク処理
&linkmotorank();
# ホストランク処理
&hostrank();
exit;


#----------------------------------------------------------
# 日時を取得
sub hiduke(){
	$ENV{'TZ'} = "JST-9";
	($sec, $min, $hour, $mday, $mon, $year,$wday, $yday, $isdst) = localtime(time());
	@week = ('日','月','火','水','木','金','土');
	$year += 1900;
	$mon++;
	$youbi = $week[$wday];
}
#----------------------------------------------------------
# 今の年月日時分秒を取得
sub now(){

	$nyear=$year;
	$nmon=$mon;
	$nmday=$mday;
	$nhour=$hour;
	$nmin=$min;
	$nsec=$sec;

	$nyear=&syorifutaketa($nyear);
	$nmon=&syorifutaketa($nmon);
	$nmday=&syorifutaketa($nmday);
	$nhour=&syorifutaketa($nhour);
	$nmin=&syorifutaketa($nmin);
	$nsec=&syorifutaketa($nsec);

	open(OUT,">./test.txt");
	print OUT $nmon;
	close(OUT);



	$now="[$nyear/$nmon/$nmday] ($youbi) $nhour:$nmin:$nsec";
}
#----------------------------------------------------------
#$nowの２桁処理をする。
sub syorifutaketa(){
	#2000より大きいときは−2000とする。
	if ($_[0] > 2000){$_[0]=$_[0]-2000;}

	#文字が1文字のときは2桁にする。
	if (length($_[0])== 1){$_[0]="0$_[0]";}

	return($_[0]);
}
#----------------------------------------------------------
#HOSTを取得
sub host(){
	if ( !$ENV{'REMOTE_HOST'} || $ENV{'REMOTE_HOST'} eq $ENV{'REMOTE_ADDR'} ){
		if ( !($host=gethostbyaddr(pack('C4',split(/\./,$ENV{'REMOTE_ADDR'})),2)) ){
			$host = $ENV{'REMOTE_ADDR'};
		}
	}
	else { $host = $ENV{'REMOTE_HOST'}; }

}
#----------------------------------------------------------------
#アドレスを取得
sub addr(){
	$addr=$ENV{'REMOTE_ADDR'};
}
#----------------------------------------------------------------
#リンク先を取得
sub linkmoto(){
	
	#$linkmoto=$ARGV[2];
	#$linkmoto =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg;
	#$linkmoto=$ENV{'HTTP_REFERER'};
}
#----------------------------------------------------------------
#ユーザエイジェントを取得
sub user_agent(){
	$user_agent=$ENV{'HTTP_USER_AGENT'};
}
#----------------------------------------------------------------

# カウンタ処理
sub count(){
	# 総合カウントファイルから読み込み
	open(IN,"./count/all.txt");
	$sougoudata = <IN>;
	close(IN);

	# １日カウントファイルから読み込み
	open(IN,"./count/day.txt");
	$daydata = <IN>;
	close(IN);

	# １ヶ月カウントファイルから読み込み
	open(IN,"./count/mon.txt");
	$mondata = <IN>;
	close(IN);
	#----------------------------------------------------------
	# 総合カウントファイルを分解(総合カウント、１日カウント、日付)
	($sougoucount,$oneday,$zenkaimday) = split(/,/, $sougoudata);

	# １日カウントファイルを分解(前回の年、月、日、1日総合、１ｈ（１〜３１））
	($dayyear,$daymon,$dayday,$daysoucount,@daycount[0..23]) = split(/,/, $daydata);

	# １ヶ月カウントファイルを分解
	($monyear,$monmon,$monsoucount,@moncount[1..31]) = split(/,/, $mondata);
	#----------------------------------------------------------



	#日付が変わったら
	if ($dayday != $mday){

		# １日カウントデータを組み立て
		$daydata=join(",", @daycount[0..23]);
		$daydata="$dayday,$daysoucount,$daydata,\n";

		# 蓄積１日カウントファイルを書き込み
		$tdayfile="./count/tday/$daymon.txt";

		open(OUT,">>$tdayfile");
		print OUT $daydata;
		close(OUT);

		#１日総カウンタ初期化
		$daysoucount=0;
		#一日のカウンタを初期化
		@daycount[0..23]=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,);
	
	}
	#月が変わったら
	if ($monmon != $mon){

		# １月カウントデータを組み立て
		$mondata=join(",", @moncount[1..31]);
		$mondata="$monyear,$monmon,$monsoucount,$mondata,\n";

		# 蓄積１月カウントファイルを書き込み
		open(OUT,">>./count/tmon.txt");
		print OUT $mondata;
		close(OUT);

		#１月総カウンタ初期化
		$monsoucount=0;
		#一月のカウンタを初期化
		@moncount[1..31]=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,);
	
	}


	#カウンタを回す。
	$sougoucount++;
	$oneday++;

	$daysoucount++;		#１日の総カウント
	$daycount[$hour]++;	#１日の時間別カウント

	$moncount[$mday]++;
	$monsoucount++;

	# 総合カウントデータを組み立て
	$sougoudata = "$sougoucount,$oneday,$mday,\n";

	# １日カウントデータを組み立て
	$daydata=join(",", @daycount[0..23]);
	$daydata="$year,$mon,$mday,$daysoucount,$daydata,";

	# １ヶ月カウントデータを組み立て
	$mondata=join(",", @moncount[1..31]);
	$mondata="$year,$mon,$monsoucount,$mondata,";

	# 総合カウントファイルを書き込み
	open(OUT,">./count/all.txt");
	print OUT $sougoudata;
	close(OUT);

	# １日カウントファイルを書き込み
	open(OUT,">./count/day.txt");
	print OUT $daydata;
	close(OUT);

	# １ヶ月カウントファイルを書き込み
	open(OUT,">./count/mon.txt");
	print OUT $mondata;
	close(OUT);
}
#------------------------------------------------------
sub countview(){

	# カウンタ画像出力
	if ($mode eq "sougou") { &count_view($daycount[$hour], $sougoulen, $sougougif); }
	elsif ($mode eq "yes") { &count_view($yes, $sublen, $subgif); }
	else { &count_view($today, $sublen, $subgif); }

}

#------------------------------------------------------
# カウンタ出力処理 
sub count_view {
	local(@view);
	local($data,$digit, $dir) = @_;

	# 桁数調整
	while (length($data) < $digit) { $data = '0' . $data; }

	@view=();
	foreach (split(//, $data)) {
		push(@view,"$dir/$_\.gif");
	}

	# 画像連結
	print "Content-type: image/gif\n\n";
	binmode(STDOUT);

	print &gifcat'gifcat(@view);

}
#------------------------------------------------------
#生ログ処理
sub namalog(){

	# 今の生ログファイルから読み込み
	open(IN,"./namalog/day.txt");
	($namalogday,$namalogmon,$namalogyear,$dami) =split(/,/,<IN>);
	close(IN);

	#日付が変わったら
	if ($namalogday != $mday){

		open(IN,"./namalog/day.txt");
		@namalog= <IN>;
		close(IN);

		open(OUT,">./namalog/$namalogday.txt");
		print OUT @namalog;
		close(OUT);

		open(OUT,">./namalog/day.txt");
		$namalogday="$mday,$mon,$year,\n";
		print OUT $namalogday;
		close(OUT);
	}

	$houmonkaisuuday=&houmonkaisuu("day");
	$houmonkaisuumon=&houmonkaisuu("mon");
	$houmonkaisuuall=&houmonkaisuu("all");

	$namalog="$now,$host,$addr,$linkmoto,$user_agent,$houmonkaisuuday,$houmonkaisuumon,$houmonkaisuuall,\n";
	# １ヶ月カウントファイルを書き込み
	open(OUT,">>./namalog/day.txt");
	print OUT $namalog;
	close(OUT);

}
#------------------------------------------------------
#訪問回数（生ログ用↑）
sub houmonkaisuu(){
	open(IN,"./hostrank/$_[0].txt");
		($hostrankdayday,$hostrankdaymon,$hostrankdayyear,$dami) =split(/,/,<IN>);
		#------------------------------------------------------
		#ホストランクのファイルの数
		$hostrankkazu=1;
		while($hostrankdata[$hostrankkazu] = <IN>){
			#蓄積ファイル数
			$hostrankkazu++;
		}
		
	close(IN);
	#蓄積ファイル数調整
	$hostrankkazu--;
	#------------------------------------------------------
	#ホストランクのファイルを分割(ホスト、訪問回数、前の訪問、初訪問）
	for ($i=1;$i<=$hostrankkazu;$i++){
		($hostrankhost[$i],$hostrankkaisuu[$i],$hostrankmae[$i],$hostrankhatu[$i],$dami)=split(/,/,$hostrankdata[$i]);
	}
	for($i=1;$i<=$hostrankkazu;$i++){
		if($host eq $hostrankhost[$i]){
			#------------------------------------------------------
			#全てのファイルのとき
			if ($_[0] eq "all"){
				#訪問回数,前訪問、初訪問を戻り値として返す。
				return("$hostrankkaisuu[$i],$hostrankmae[$i],$hostrankhatu[$i]");

			}
			#------------------------------------------------------
			#日と月のファイルのとき
			else{
				#訪問回数を戻り値として返す。
				return($hostrankkaisuu[$i]);
			}
			$houmonari=1;

		}

	}
	#本日始めての訪問のとき（ホストランクファイルに名前がなかったとき）
	if ($houmonari==0){
		if ($_[0] eq "all"){
			return("0,-,-");
		}
		else{
			return(0);
		}

	}
}
#------------------------------------------------------
#リンク元ランク処理
sub linkmotorank(){
	#もしリンク元を取得したとき
	if ($linkmoto ne ""){&linkmotosyutoku;}
}
#------------------------------------------------------
#リンク元取得処理
sub linkmotosyutoku(){
	#リンク元取得（日）しにいく
	&linkmotoday();
	#リンク元取得（月）しにいく
	&linkmotomon();
	#リンク元取得（all）しにいく
	&linkmotoall();
}
#------------------------------------------------------
#リンク元取得処理（日）
sub linkmotoday(){
	# 今のリンク元ランクファイルから読み込み

	open(IN,"./linkmotorank/day.txt");
		($linkmotorankdayday,$linkmotorankdaymon,$linkmotorankdayyear,$dami) =split(/,/,<IN>);
		#------------------------------------------------------
		#リンク元ランクのファイルの数
		$linkmotorankkazu=1;
		while($linkmotorankdata[$linkmotorankkazu] = <IN>){
			#蓄積月ファイル数
			$linkmotorankkazu++;
		}
	close(IN);
	#------------------------------------------------------
	#蓄積月ファイル数を調整
	$linkmotorankkazu--;

	#------------------------------------------------------
	#リンク元ランクのファイルを分割
	for ($i=1;$i<=$linkmotorankkazu;$i++){
		($linkmotoranklink[$i],$linkmotorankkaisuu[$i],$dami)=split(/,/,$linkmotorankdata[$i]);
	}

	#日付が変わったら
	if ($linkmotorankdayday != $mday){&linkmotodaykawaru();}
	#日付が同じ
	else{&linkmotodaykyou();}
	
}
#------------------------------------------------------
#日付が変わっていないとき（日）
sub linkmotodaykyou(){
	
	#リンク元がすでにあるか調べる
	$linkmotorankari=0;
	for ($i=1;$i<=$linkmotorankkazu;$i++){
		#もしあるときはその回数を＋１する。
		if($linkmoto eq $linkmotoranklink[$i]){
			$linkmotorankkaisuu[$i]++;
			$linkmotorankari=1;
		}
	}

	#リンク元がなかったとき（最後尾に新しくリンクを追加する。）
	if ($linkmotorankari != 1){
		$linkmotorankkazu++;
		$linkmotoranklink[$linkmotorankkazu]=$linkmoto;
		$linkmotorankkaisuu[$linkmotorankkazu]=1;
	}


	#１日リンク元ランクファイルを結合させる
	for ($i=1;$i<=$linkmotorankkazu;$i++){
		$linkmotorankdata[$i]="$linkmotoranklink[$i],$linkmotorankkaisuu[$i],\n";
	}

	# １日リンク元ランクファイルを書き込み
	open(OUT,">./linkmotorank/day.txt");
		print OUT "$linkmotorankdayday,$linkmotorankdaymon,$linkmotorankdayyear,\n";
		for ($i=1;$i<=$linkmotorankkazu;$i++){
			print OUT $linkmotorankdata[$i];
		}
	close(OUT);
	
}
#------------------------------------------------------
#日付が変わったら（日）
sub linkmotodaykawaru(){
	

		open(IN,"./linkmotorank/day.txt");
			@linkmotorank= <IN>;
		close(IN);

		open(OUT,">./linkmotorank/$linkmotorankdaymon/$linkmotorankdayday.txt");
			print OUT @linkmotorank;
		close(OUT);

		#現在のリンク元ファイルを初期化する。
		#データに今のリンクと１を入れる。
		$linkmotorankdata="$linkmoto,1,\n";
		open(OUT,">./linkmotorank/day.txt");
			print OUT "$mday,$mon,$year,\n";
			print OUT $linkmotorankdata;
		close(OUT);

}
#------------------------------------------------------
#------------------------------------------------------
#リンク元取得処理（月）
sub linkmotomon(){
	# 今のリンク元ランクファイルから読み込み
	open(IN,"./linkmotorank/mon.txt");
		($linkmotorankmonmon,$linkmotorankmonyear,$dami) =split(/,/,<IN>);
		#------------------------------------------------------
		#リンク元ランクのファイルの数
		$linkmotorankkazu=1;
		while($linkmotorankdata[$linkmotorankkazu] = <IN>){
			#蓄積月ファイル数
			$linkmotorankkazu++;
		}
	close(IN);
	#------------------------------------------------------
	#蓄積月ファイル数を調整
	$linkmotorankkazu--;

	#------------------------------------------------------
	#リンク元ランクのファイルを分割
	for ($i=1;$i<=$linkmotorankkazu;$i++){
		($linkmotoranklink[$i],$linkmotorankkaisuu[$i],$dami)=split(/,/,$linkmotorankdata[$i]);
	}

	#日付が変わったら
	if ($linkmotorankmonmon != $mon){&linkmotomonkawaru();}
	#日付が同じ
	else{&linkmotomonkyou();}
	
}
#------------------------------------------------------
#月が変わっていないとき（月）
sub linkmotomonkyou(){
	
	#リンク元がすでにあるか調べる
	$linkmotorankari=0;
	for ($i=1;$i<=$linkmotorankkazu;$i++){
		#もしあるときはその回数を＋１する。
		if($linkmoto eq $linkmotoranklink[$i]){
			$linkmotorankkaisuu[$i]++;
			$linkmotorankari=1;
		}
	}

	#リンク元がなかったとき（最後尾に新しくリンクを追加する。）
	if ($linkmotorankari != 1){
		$linkmotorankkazu++;
		$linkmotoranklink[$linkmotorankkazu]=$linkmoto;
		$linkmotorankkaisuu[$linkmotorankkazu]=1;
	}


	#１日リンク元ランクファイルを結合させる
	for ($i=1;$i<=$linkmotorankkazu;$i++){
		$linkmotorankdata[$i]="$linkmotoranklink[$i],$linkmotorankkaisuu[$i],\n";
	}

	# １日リンク元ランクファイルを書き込み
	open(OUT,">./linkmotorank/mon.txt");
		print OUT "$linkmotorankmonmon,$linkmotorankmonyear,\n";
		for ($i=1;$i<=$linkmotorankkazu;$i++){
			print OUT $linkmotorankdata[$i];
		}
	close(OUT);
	
}
#------------------------------------------------------
#月が変わったら（月）
sub linkmotomonkawaru(){
	

		open(IN,"./linkmotorank/mon.txt");
			@linkmotorank= <IN>;
		close(IN);

		open(OUT,">./linkmotorank/$linkmotorankmonmon/tmon.txt");
			print OUT @linkmotorank;
		close(OUT);

		#現在のリンク元ファイルを初期化する。
		#データに今のリンクと１を入れる。
		$linkmotorankdata="$linkmoto,1,\n";
		open(OUT,">./linkmotorank/mon.txt");
			print OUT "$mon,$year,\n";
			print OUT $linkmotorankdata;
		close(OUT);

}
#------------------------------------------------------
#------------------------------------------------------
#リンク元取得処理（全て）
sub linkmotoall(){
	# 今のリンク元ランクファイルから読み込み
	open(IN,"./linkmotorank/all.txt");

		#------------------------------------------------------
		#リンク元ランクのファイルの数
		$linkmotorankkazu=1;
		while($linkmotorankdata[$linkmotorankkazu] = <IN>){
			#蓄積ファイル数
			$linkmotorankkazu++;
		}
	close(IN);
	#------------------------------------------------------
	#蓄積月ファイル数を調整
	$linkmotorankkazu--;

	#------------------------------------------------------
	#リンク元ランクのファイルを分割
	for ($i=1;$i<=$linkmotorankkazu;$i++){
		($linkmotoranklink[$i],$linkmotorankkaisuu[$i],$dami)=split(/,/,$linkmotorankdata[$i]);
	}

	#------------------------------------------------------
	#リンク元がすでにあるか調べる
	$linkmotorankari=0;
	for ($i=1;$i<=$linkmotorankkazu;$i++){
		#もしあるときはその回数を＋１する。
		if($linkmoto eq $linkmotoranklink[$i]){
			$linkmotorankkaisuu[$i]++;
			$linkmotorankari=1;
		}
	}

	#リンク元がなかったとき（最後尾に新しくリンクを追加する。）
	if ($linkmotorankari != 1){
		$linkmotorankkazu++;
		$linkmotoranklink[$linkmotorankkazu]=$linkmoto;
		$linkmotorankkaisuu[$linkmotorankkazu]=1;
	}


	#１日リンク元ランクファイルを結合させる
	for ($i=1;$i<=$linkmotorankkazu;$i++){
		$linkmotorankdata[$i]="$linkmotoranklink[$i],$linkmotorankkaisuu[$i],\n";
	}

	# １日リンク元ランクファイルを書き込み
	open(OUT,">./linkmotorank/all.txt");
		for ($i=1;$i<=$linkmotorankkazu;$i++){
			print OUT $linkmotorankdata[$i];
		}
	close(OUT);
	
}
#------------------------------------------------------
#------------------------------------------------------
#------------------------------------------------------
#ホストランク処理
sub hostrank(){
	#もしホストを取得したとき
	if ($host ne ""){&hostsyutoku;}
}
#------------------------------------------------------
#ホスト取得処理
sub hostsyutoku(){
	#ホスト取得（日）しにいく
	&hostday();
	#ホスト取得（月）しにいく
	&hostmon();
	#ホスト取得（all）しにいく
	&hostall();
}
#------------------------------------------------------
#ホスト取得処理（日）
sub hostday(){
	# 今のホストランクファイルから読み込み

	open(IN,"./hostrank/day.txt");
		($hostrankdayday,$hostrankdaymon,$hostrankdayyear,$dami) =split(/,/,<IN>);
		#------------------------------------------------------
		#ホストランクのファイルの数
		$hostrankkazu=1;
		while($hostrankdata[$hostrankkazu] = <IN>){
			#蓄積月ファイル数
			$hostrankkazu++;
		}
	close(IN);
	#------------------------------------------------------
	#蓄積月ファイル数を調整
	$hostrankkazu--;

	#------------------------------------------------------
	#ホストランクのファイルを分割
	for ($i=1;$i<=$hostrankkazu;$i++){
		($hostrankhost[$i],$hostrankkaisuu[$i],$hostrankmae[$i],$hostrankhatu[$i],$dami)=split(/,/,$hostrankdata[$i]);
	}

	#日付が変わったら
	if ($hostrankdayday != $mday){&hostdaykawaru();}
	#日付が同じ
	else{&hostdaykyou();}
	
}
#------------------------------------------------------
#日付が変わっていないとき（日）
sub hostdaykyou(){
	
	#ホストがすでにあるか調べる
	$hostrankari=0;
	for ($i=1;$i<=$hostrankkazu;$i++){
		#もしあるときはその回数を＋１する。
		if($host eq $hostrankhost[$i]){
			$hostrankkaisuu[$i]++;
			$hostrankari=1;
			#今の時間を入れる。
			$hostrankmae[$i]=$now;
		}
	}

	#ホストがなかったとき（最後尾に新しくホストを追加する。）
	if ($hostrankari != 1){
		$hostrankkazu++;
		$hostrankhost[$hostrankkazu]=$host;
		$hostrankkaisuu[$hostrankkazu]=1;
		#訪問時間に時間を入れる。
		$hostrankmae[$hostrankkazu]=$now;
		#初訪問に時間を入れる。
		$hostrankhatu[$hostrankkazu]=$now;

	}



	#１日ホストランクファイルを結合させる
	for ($i=1;$i<=$hostrankkazu;$i++){
		$hostrankdata[$i]="$hostrankhost[$i],$hostrankkaisuu[$i],$hostrankmae[$i],$hostrankhatu[$i],\n";
	}

	# １日ホストランクファイルを書き込み
	open(OUT,">./hostrank/day.txt");
		print OUT "$hostrankdayday,$hostrankdaymon,$hostrankdayyear,\n";
		for ($i=1;$i<=$hostrankkazu;$i++){
			print OUT $hostrankdata[$i];
		}
	close(OUT);
	
}
#------------------------------------------------------
#日付が変わったら（日）
sub hostdaykawaru(){
	

		open(IN,"./hostrank/day.txt");
			@hostrank= <IN>;
		close(IN);

		open(OUT,">./hostrank/$hostrankdaymon/$hostrankdayday.txt");
			print OUT @hostrank;
		close(OUT);

		#現在のホストファイルを初期化する。
		#データに今のホストと１を入れる。
		$hostrankdata="$host,1,$now,$now,\n";
		open(OUT,">./hostrank/day.txt");
			print OUT "$mday,$mon,$year,\n";
			print OUT $hostrankdata;
		close(OUT);

}
#------------------------------------------------------
#------------------------------------------------------
#ホスト取得処理（月）
sub hostmon(){
	# 今のホストランクファイルから読み込み
	open(IN,"./hostrank/mon.txt");
		($hostrankmonmon,$hostrankmonyear,$dami) =split(/,/,<IN>);
		#------------------------------------------------------
		#ホストランクのファイルの数
		$hostrankkazu=1;
		while($hostrankdata[$hostrankkazu] = <IN>){
			#蓄積月ファイル数
			$hostrankkazu++;
		}
	close(IN);
	#------------------------------------------------------
	#蓄積月ファイル数を調整
	$hostrankkazu--;

	#------------------------------------------------------
	#ホストランクのファイルを分割
	for ($i=1;$i<=$hostrankkazu;$i++){
		($hostrankhost[$i],$hostrankkaisuu[$i],$hostrankmae[$i],$hostrankhatu[$i],$dami)=split(/,/,$hostrankdata[$i]);
	}

	#日付が変わったら
	if ($hostrankmonmon != $mon){&hostmonkawaru();}
	#日付が同じ
	else{&hostmonkyou();}
	
}
#------------------------------------------------------
#月が変わっていないとき（月）
sub hostmonkyou(){
	
	#ホストがすでにあるか調べる
	$hostrankari=0;
	for ($i=1;$i<=$hostrankkazu;$i++){
		#もしあるときはその回数を＋１する。
		if($host eq $hostrankhost[$i]){
			$hostrankkaisuu[$i]++;
			$hostrankari=1;
			#今の時間を入れる。
			$hostrankmae[$i]=$now;
		}
	}

	#ホストがなかったとき（最後尾に新しくホストを追加する。）
	if ($hostrankari != 1){
		$hostrankkazu++;
		$hostrankhost[$hostrankkazu]=$host;
		$hostrankkaisuu[$hostrankkazu]=1;
		#訪問時間に時間を入れる。
		$hostrankmae[$hostrankkazu]=$now;
		#初訪問に時間を入れる。
		$hostrankhatu[$hostrankkazu]=$now;
	}


	#１日ホストランクファイルを結合させる
	for ($i=1;$i<=$hostrankkazu;$i++){
		$hostrankdata[$i]="$hostrankhost[$i],$hostrankkaisuu[$i],$hostrankmae[$i],$hostrankhatu[$i],\n";
	}

	# １日ホストランクファイルを書き込み
	open(OUT,">./hostrank/mon.txt");
		print OUT "$hostrankmonmon,$hostrankmonyear,\n";
		for ($i=1;$i<=$hostrankkazu;$i++){
			print OUT $hostrankdata[$i];
		}
	close(OUT);
	
}
#------------------------------------------------------
#月が変わったら（月）
sub hostmonkawaru(){
	

		open(IN,"./hostrank/mon.txt");
			@hostrank= <IN>;
		close(IN);

		open(OUT,">./hostrank/$hostrankmonmon/tmon.txt");
			print OUT @hostrank;
		close(OUT);

		#現在のホストファイルを初期化する。
		#データに今のホストと１を入れる。
		$hostrankdata="$host,1,$now,$now,\n";
		open(OUT,">./hostrank/mon.txt");
			print OUT "$mon,$year,\n";
			print OUT $hostrankdata;
		close(OUT);

}
#------------------------------------------------------
#------------------------------------------------------
#ホスト取得処理（全て）
sub hostall(){
	# 今のホストランクファイルから読み込み
	open(IN,"./hostrank/all.txt");

		#------------------------------------------------------
		#ホストランクのファイルの数
		$hostrankkazu=1;
		while($hostrankdata[$hostrankkazu] = <IN>){
			#蓄積ファイル数
			$hostrankkazu++;
		}
	close(IN);
	#------------------------------------------------------
	#蓄積月ファイル数を調整
	$hostrankkazu--;

	#------------------------------------------------------
	#ホストランクのファイルを分割(ホスト、訪問回数、前の訪問、初訪問）
	for ($i=1;$i<=$hostrankkazu;$i++){
		($hostrankhost[$i],$hostrankkaisuu[$i],$hostrankmae[$i],$hostrankhatu[$i],$dami)=split(/,/,$hostrankdata[$i]);
	}

	#------------------------------------------------------
	#ホストがすでにあるか調べる
	$hostrankari=0;
	for ($i=1;$i<=$hostrankkazu;$i++){
		#もしあるときはその回数を＋１をし訪問時間を記録する。
		if($host eq $hostrankhost[$i]){
			$hostrankkaisuu[$i]++;
			$hostrankari=1;
			#今の時間を入れる。
			$hostrankmae[$i]=$now;
		}
	}

	#ホストがなかったとき（最後尾に新しくリンクを追加する。）
	if ($hostrankari != 1){
		$hostrankkazu++;
		$hostrankhost[$hostrankkazu]=$host;
		$hostrankkaisuu[$hostrankkazu]=1;
		#訪問時間に時間を入れる。
		$hostrankmae[$hostrankkazu]=$now;
		#初訪問に時間を入れる。
		$hostrankhatu[$hostrankkazu]=$now;
	}


	#１日ホストランクファイルを結合させる
	for ($i=1;$i<=$hostrankkazu;$i++){
		$hostrankdata[$i]="$hostrankhost[$i],$hostrankkaisuu[$i],$hostrankmae[$i],$hostrankhatu[$i],\n";
	}

	# １日ホストランクファイルを書き込み
	open(OUT,">./hostrank/all.txt");
		for ($i=1;$i<=$hostrankkazu;$i++){
			print OUT $hostrankdata[$i];
		}
	close(OUT);
	
}