# /usr/bin/perl -Tw #----------------------------------------------------------------------- # Created: 2014-12-?? #----------------------------------------------------------------------- # TODO # - accept stdin # - accept more than two files (all will also be removed from first file) #----------------------------------------------------------------------- use strict; use warnings; use File::Slurp; #use Set::Object; # NO - no way to preserve order. #use List::Compare; # NO - no way to preserve order. use Array::Utils qw(:all); #----------------------------------------------------------------------- my $file1 = $ARGV[0] || die 'bad file1'; my $file2 = $ARGV[1] || die 'bad file2'; if ((! -r $file1) or (! -r $file2)) { print "Error: $file1 or $file2 not readable.\n"; exit 1; } my @set1 = read_file $file1; my @set2 = read_file $file2; my @left_only = array_minus(@set1, @set2); for my $item (@left_only) { print "$item"; } #-----------------------------------------------------------------------