option for inverse select
authorJason Etheridge <jason@esilibrary.com>
Thu, 7 Aug 2008 18:46:10 +0000 (18:46 +0000)
committerJason Etheridge <jason@esilibrary.com>
Thu, 7 Aug 2008 18:46:10 +0000 (18:46 +0000)
select_marc_as_text.pl

index 955edd9..6a28e88 100755 (executable)
@@ -5,7 +5,9 @@ use MARC::Record;
 use MARC::File::XML ( BinaryEncoding => 'utf-8' );
 use MARC::Field;
 
-my $record_id_file = $ARGV[0];
+my $inverse = $ARGV[0] eq "inverse";
+
+my $record_id_file = $ARGV[1];
 my %record_ids;
 
 open FILE, $record_id_file;
@@ -14,14 +16,14 @@ while (my $record_id = <FILE>) {
 }
 close FILE;
 
-my $id_tag = $ARGV[1]; my $id_subfield = $ARGV[2];
+my $id_tag = $ARGV[2]; my $id_subfield = $ARGV[3];
 
 binmode(STDOUT, ':utf8');
 binmode(STDIN, ':utf8');
 
 my $M;
 
-foreach $argnum ( 3 .. $#ARGV ) {
+foreach $argnum ( 4 .. $#ARGV ) {
 
        print STDERR "Processing " . $ARGV[$argnum] . "\n";
 
@@ -44,7 +46,10 @@ foreach $argnum ( 3 .. $#ARGV ) {
                }
                $id = $id->as_string($id_subfield);
 
-        if (defined $record_ids{ $id }) {
+        if ( 
+                ( ! $inverse && defined $record_ids{ $id } ) ||
+                ( $inverse && ! defined $record_ids{ $id } )
+            ) {
             open FILE, ">$id.txt";
             binmode(FILE, ':utf8');
             print FILE $record->as_formatted();