license and environment
[migration-tools.git] / dump_inverse_select_marc.pl
index e71997a..249cad5 100755 (executable)
@@ -1,10 +1,13 @@
 #!/usr/bin/perl
+use open ':utf8';
 use MARC::Batch;
 use MARC::Record;
 use MARC::File::XML ( BinaryEncoding => 'utf-8' );
 use MARC::Field;
 
-my $record_id_file = $ARGV[0];
+my $format = $ARGV[0];
+
+my $record_id_file = $ARGV[1];
 my %record_ids;
 
 open FILE, $record_id_file;
@@ -13,16 +16,20 @@ 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');
 
-foreach $argnum ( 3 .. $#ARGV ) {
+my $M;
+
+foreach $argnum ( 4 .. $#ARGV ) {
 
        print STDERR "Processing " . $ARGV[$argnum] . "\n";
 
-       my $batch = MARC::Batch->new('XML',$ARGV[$argnum]);
+    open $M, '<:utf8', $ARGV[$argnum];
+
+       my $batch = MARC::Batch->new('XML',$M);
        $batch->strict_off();
        $batch->warnings_off();
 
@@ -40,8 +47,12 @@ foreach $argnum ( 3 .. $#ARGV ) {
                $id = $id->as_string($id_subfield);
 
         if (! defined $record_ids{ $id }) {
-            print STDOUT '=-' x 39 . "\n";
-            print STDOUT $record->as_formatted() . "\n";
+            if ($format eq 'text') {
+                print STDOUT '=-' x 39 . "\n";
+                print STDOUT $record->as_formatted() . "\n";
+            } else {
+                print STDOUT $record->as_xml() . "\n";
+            }
         }
        }
     print STDERR "Processed $count records.\n";