#
#	メールアドレス一覧から，同じ人のアドレスっぽいのを除去する
#		author	yoji-o
#		date	2006-10-12 ~ 2006-12-07
#
#		◇入力
#			emailアドレス一覧（標準入力）
#		◇出力
#			旧-新が対応付けられたemail関係リスト
#
#		◇使用法
#			コマンドラインで、以下のコマンドをたたく(要 Perl 5 以上)
#			perl emailDupShrinker.pl < email_list.txt
#

use Strict;

#変数宣言
my @email;					#E-mailリスト
my %unique;					#ユニークなE-mailリストのハッシュ


#ここから
&unique();					#ユニークなアドレス一覧を求める
#&printDiff();				#変化のあるリストのみ表示

#print "\nInput  : ", $#email+1;
#print "\nUnique : ", scalar(keys(%unique)), "\n\n";

&printAll();				#全員の対応表を表示
exit;


################################################################################
#以下サブルーチン群

#===============================================================================
#	unique
#		unique関数
sub unique {

	#読み込み
	while(<>) {
		chomp;
		push @email, $_;
	}
	
	#ユニークなアドレスを抽出してハッシュに入れる
	foreach(@email) {
		my $name = $_;
		my $address = $_;
		
		$name =~ s/(.*)\@.*/$1/g;
		$unique{lc($name)} = $address;
	}
}


#===============================================================================
#	printDiff
#		printDiff関数
sub printDiff {

	while(my ($name, $address) = each %unique) {
		print "$name - $address\n";
	}

}


#===============================================================================
#	printAll
#		printAll関数
sub printAll {

	foreach(@email) {
		print "$_ ";
		$_ =~ s/(.*)\@.*/$1/g;
		print "$unique{lc($_)}\n";
	}

}

