#
#	mboxからメール送信回数をカウントするプログラム
#		author yoji-o
#		date 2007-08-07
#
#		◇入力
#			mbox形式のメールアーカイブ
#		◇出力
#			mboxに含まれるメールの数
#			フォーマット：ファイル名	メール数	ユニークメール送信者数（参加者数）
#
#		◇使用法
#			コマンドラインで、以下のコマンドをたたく(要 Perl 5 以上)
#			perl mbox2mailcount.pl [filename1,filename2,...]
#

use strict;


#変数宣言
my $mailsplitter = '^From ';	#メールの区切りを示す正規表現
my %emails;
my $count = 0;


#ここから
&parse();
exit;


################################################################################
#以下サブルーチン群

#===============================================================================
#	parse
#		mailboxをanalyzeする
sub parse {
	
	open MBOX, $ARGV[0] or die "cannot open file : $ARGV[0]\n";
		while (<MBOX>) {
			#when mailsplitter exists
			if ($_ =~ /$mailsplitter/) {
				
				#replace from ' at ' to '@'
				$_ =~ s/ at /@/;
	
				#replace from mail header to mail address
				$_ =~ s/^From\s([\w\@\.\-]+)\s.*$/$1/;
	
				$count++;
				$emails{$_}++;
			}
		}
	close MBOX;

	print $ARGV[0], "\t", $count, "\t", scalar(keys %emails);
	
}


