#!/usr/bin/perl use strict; use warnings; use Getopt::Std; my %opt; Get_Args(); open (MASTER , '<' , $opt{m}) or die "Unable to open $opt{m} as master : $!"; open (SLAVE , '<' , $opt{s}) or die "Unable to open $opt{s} as slave : $!"; open (OUTPUT , '>' , $opt{o}) or die "Unable to open $opt{o} for output : $!"; select OUTPUT; my (%master , %slave); %slave = map {chomp; $_ => undef} ; while ( ) { chomp; print "$_ exists on master but not slave\n" if ! exists $slave{$_}; $master{$_} = undef; } delete @slave{ keys %master }; print "$_ exists on slave but not master\n" for keys %slave; sub Get_Args { my $Usage = qq{Usage: $0 -m -s -o -h : This help message. -m : master file -s : slave file -o : output file } . "\n"; getopts( 'hm:s:o:' , \%opt ) or die $Usage; die $Usage if $opt{h} || ! $opt{m} || ! $opt{s} || ! $opt{o}; }