delete from hateblo.jp where 1=1;

タイトルに意味はありません。

UserAgent判別部分

			# X-boxの場合
			if(/X-box/){
				$Browser{'X box'}{0} += $c;
			# MSN Explorerらしい
			} elsif(/MSN/) {
				$Browser{'MSN Explorer'}{0} += $c;
			# Operaというブラウザ
			} elsif(/Opera\s*(\d\.\d\d?)/) {
				$Browser{'Opera'}{$1} += $c;
			# NN判別
			} elsif(/Netscape\s*(\d(\.\d)?)\d*/) {
				$Browser{'Netscape'}{$1} += $c;
			# 巡回ソフト
			} elsif(/(Internet|Download) Ninja\s*(\d\.\d)/){
				$Browser{'Internet Ninja'}{$1} += $c;
			} elsif(/PerMan Surfer\s*(\d\.\d)/){
				$Browser{'波乗り太郎'}{$1} += $c;
			# IE判別
			} elsif(/MSP?IE\s*(\d\.\d)/) {
				$Browser{'Internet Explorer'}{$1} += $c;
			# IEキャッチ
			} elsif(/MSP?IE|compatible|Internet Explorer/) {
				$Browser{'Internet Explorer'}{0} += $c;
			# NNの場合3桁表記を行っている場合が多い
			} elsif(/Mozilla\/(\d\.\d)\d+/) {
				$Browser{'Netscape'}{$1} += $c;
			# ドリームキャスト
			} elsif(/(Dream|Sonic)Passport\/(\d\.\d\d?)/) {
				$Browser{'ドリームキャスト'}{$1} += $c;
			# Microsoft製品からの場合
			} elsif(/Microsoft/) {
				$Browser{'Microsoft 製品'}{0} += $c;
			# 携帯を分別
			} elsif(/DoCoMo/) {
				$Browser{'携帯'}{'DoCoMo'} += $c;
			} elsif(/J-PHONE|Vodafone/i) {
				$Browser{'携帯'}{'Vodafone'} += $c;
			} elsif(/UP\.Browser/) {
				$Browser{'携帯'}{'au'} += $c;
			# Mozilla.orgで開発中のブラウザ
			} elsif(/Gecko/) {
				if(/rv\:(\d.\d)/){
					$Browser{'Gecko'}{$1} += $c;
				} else {
					$Browser{'Gecko'}{0} += $c;
				}
			# Lynx
			} elsif(/Lynx/) {
				$Browser{'Lynx'}{0} += $c;
			# ホームページビルダーからのアクセス
			} elsif(/IBM\sHomePage\sBuilder/) {
				$Browser{'IBM ホームページビルダー'}{0} += $c;
			# Sleipnir
			} elsif(/Sleipnir\s*(Version\s)?(\d\.\d\d?)/) {
				$Browser{'Sleipnir'}{$1} += $c;
			# ブラウザ?
			} elsif(/Pockey\/(\d\.\d)/) {
				$Browser{'Pockey'}{$1} += $c;
			# NNの場合の表記(良くある表現)
			} elsif(/(I|U)(\;|\))/&&/Mozilla\/(\d\.\d)/) {
				$Browser{'Netscape'}{$1} += $c;
			# きわどい場合
			} else {
				$Browser{'その他'}{0} += $c;
			}
		#------------------------OS判別------------------------#
			# Windows系の場合
			if(/Win(dows)?\s?(..)\s?(\d.?.\d)?/) {
				# 32bitになったのは98〜?
				if($2 eq '32'){
					$OS{'Windows'}{'98'} += $c;
				# 16bitだから95?
				} elsif($2 eq '16'){
					$OS{'Windows'}{'95'} += $c;
				# Windows CEから
				} elsif($2 eq 'CE'){
					$OS{'Windows'}{'CE'} += $c;
				# Windows NT系の場合
				} elsif($2 eq 'NT'){
					# Windows XP?
					if($3 eq '5.1'){
						$OS{'Windows'}{'XP'} += $c;
					# Windows 2000
					} elsif($3 eq '5.0'){
						$OS{'Windows'}{'2000'} += $c;
					# その他Windows NT系
					} else {
						$OS{'Windows'}{'NT ' . $3} += $c;
					}
				# Windows 2000
				} elsif($2 eq '20'||$2 eq '2k') {
					$OS{'Windows'}{'2000'} += $c;
				# Windows 98 SE?
				} elsif($2 eq '98' && $_ =~ /Win\s9x/) {
					$OS{'Windows'}{'98SE'} += $c;
				# Windowsしか分からない場合
				} elsif($2 =~ /\;/) {
					$OS{'Windows'} += $c;
				# Windows系の何たら
				} else {
					$OS{'Windows'}{$2} += $c;
				}
			# Windowsしか分からない場合
			} elsif(/Windows/){
				$OS{'Windows'} += $c;
			# たぶん巡回ソフトで情報を吐かない奴
			} elsif(/Internet Ninja/){
				$OS{'巡回ソフト'} += $c;
			# ドリキャ
			} elsif(/(Dream|Sonic)Passport/) {
				$OS{'ドリームキャスト'} += $c;
			# 携帯
			} elsif(/DoCoMo|J-PHONE|Vodafone|UP\.Browser/) {
				$OS{'携帯'} += $c;
			# マックでしょうw
			} elsif(/Mac/) {
				$OS{'Mac OS'} += $c;
			# Unixの場合
			} elsif(/Unix/) {
				$OS{'UNIX'} += $c;
			# RedHatの場合
			} elsif(/RedHat/) {
				$OS{'RedHat'} += $c;
			# Linuxの場合
			} elsif(/Linux/) {
				$OS{'Linux'} += $c;
			# SunOSの場合
			} elsif(/SunOS/) {
				$OS{'SunOS'} += $c;
			# FreeBSD or BSD or NetBSD の場合
			} elsif(/BSD/) {
				$OS{'BSD'} += $c;
			# 分からない場合
			} else {
				$OS{'不明'} += $c;
				#$OS{$_} += $c;
			}

結構バージョンが古いので柔軟に対応できるかは不明。