#!/usr/bin/perl use strict; my $print_just_aa = 0; my $print_just_bb = 0; my $print_both = 0; while (@ARGV) { if ( $ARGV[0] eq "--print-just-aa" ) { shift; $print_just_aa = 1; } elsif ( $ARGV[0] eq "--print-just-bb" ) { shift; $print_just_bb = 1; } elsif ( $ARGV[0] eq "--print-both" ) { shift; $print_both = 1; } else { last; } } my $aa_filename = shift; my $bb_filename = shift; my %aa; open(FH, "<$aa_filename") or die "unable to open file ($aa_filename): $!"; while () { chomp; $aa{$_} = 1; } close(FH); my $count_just_aa = 0; my $count_just_bb = 0; my $count_both = 0; open(FH2, "<$bb_filename") or die "unable to open file ($bb_filename): $!"; while () { chomp; my $it = $_; if ( exists $aa{$it} ) { # in both $aa{$it} = 2; $count_both++; print "$it\n" if ( $print_both ); } else { # in bb but not aa $count_just_bb++; print "$it\n" if ( $print_just_bb ); } } foreach my $it ( keys %aa ) { if ( $aa{$it} == 1 ) { # in aa but not bb $count_just_aa++; print "$it\n" if ( $print_just_aa ); } } print STDERR "in both = $count_both\n"; print STDERR "just in $aa_filename = $count_just_aa\n"; print STDERR "just in $bb_filename = $count_just_bb\n";