plus された行 と minus された行と同じ file 内の重複行を調べる

#!/usr/bin/perl
use strict;
use warnings;

if(scalar(@ARGV) != 2){
	warn('usage: ' . $0 . ' TEXT1 TEXT2' . "\n");
	exit();
}

my $file = shift(@ARGV);
my $minus_file = shift(@ARGV);

open(FH ,$file) || die("Can't open file: $!");
my $csv;
chop(@$csv = <FH>);
close(FH);

open(FH ,$minus_file) || die("Can't open file: $!");
my $minus_csv;
chop(@$minus_csv = <FH>);
close(FH);

my $hash;

for(@$csv){
	if(exists($hash->{$_})){
		print('<' . $_ . "\n");
	}
	else{
		$hash->{$_} = 1;
	}
}

my $minus_hash;

for(@$minus_csv){
	if(exists($minus_hash->{$_})){
		print('>' . $_ . "\n");
	}
	else{
		$minus_hash->{$_} = 1;
	}
}

for(sort(keys(%$hash))){
	if(exists($minus_hash->{$_})){
		delete($minus_hash->{$_});
		next();
	}

	print('+' . $_ . "\n");
}

for(sort(keys(%$minus_hash))){
	print('-' . $_ . "\n");
}

Oracle の minus を image してたからなんだけど、今考えると何故 minus を作ったんだろう?
一歩前進して plus を作ればよかったかも。
その方が使った場合は直感的だったな〜。


mimic28号でした。