
	open FH,$ARGV[0] or die "error";
	while(<FH>){
		$_  = lc($_);
		push(@list,$_);
	}

	# 取得した一覧を昇順にソート
	my @sortByMail = sort {$a cmp $b} @list;

	for($i=0;$i<=$#sortByMail;$i++){
		# $fromNameと$fromMailに分ける
		my($fromMail_1, $fromName_1) = split/\t/ , $sortByMail[$i];
		push(@fromMail_1, $fromMail_1);
	}

	# Step.1で対応済みの部分を除く
	for($j=0;$j<=$#sortByMail;$j++){
		if($fromMail_1[$j] ne $fromMail_1[$j+1]){
			push(@removeSameMail, $sortByMail[$j]);
			chomp($sortByMail[$j]);
			# $fromNameと$fromMailに分ける
			my($fromMail_2, $fromName_2) = split/\t/ , $sortByMail[$j];
			push(@fromName_2, $fromName_2);
			# $fromMailについては@以前も抽出
			my $mailBeforeAt = $fromName_2;
			$mailBeforeAt =~ s/^(.+?)\@.*/$1/;
			push(@mailBeforeAt, $mailBeforeAt);
		}
	}

	# Step.2で対応済みの部分を除く
	for($k=0;$k<=$#removeSameMail;$k++){
		unless($fromName_2[$k] ne "" && ($fromName_2[$k] eq $fromName_2[$k+1]) && ($mailBeforeAt[$k] eq $mailBeforeAt[$k+1])){
			#push(@mergeSameActor, $removeSameMail[$k]);
			chomp($removeSameMail[$k]);
			# 第1キーと第2キーの入れ替えるために，$fromNameと$fromMailに分ける　※以降では名前が主キーになるため
			my($tmpFromMail, $tmpFromName) = split/\t/ , $removeSameMail[$k];
			push(@exchangeOrderKey,$tmpFromName."\t".$tmpFromMail."\n");
		}
	}

	@sortByName = sort {$a cmp $b} @exchangeOrderKey;

	for($m=0;$m<=$#sortByName;$m++){
		my($fromName_3, $fromMail_3) = split/\t/, $sortByName[$m];
		push(@fromName_3, $fromName_3);
		chomp($fromMail_3);
		push(@fromMail_3, $fromMail_3);
	}

	# Step.3で対象となるものを抽出
	$flag = 0;
	for($m=0;$m<=$#sortByName;$m++){
		if($fromName_3[$m] ne ""){
			if($fromName_3[$m] eq $fromName_3[$m+1]){
				push(@sameNameList, $sortByName[$m]);
#				if($flag == 0){
#					print $fromName_3[$m]," -> ";
#				}
#				print $fromMail_3[$m],"\t";
#				$flag++;
			}
			elsif($fromName_3[$m-1] eq $fromName_3[$m]){
				push(@sameNameList, $sortByName[$m]);
#				print $fromMail_3[$m],"\n";
#				$flag = 0;
			}
		}
	}
	print @sameNameList;
