Merge branch 'bug_9609' into 3.12-master
[koha.git] / misc / batchImportMARCWithBiblionumbers.pl
index 893d988..24692fd 100755 (executable)
@@ -2,6 +2,7 @@
 # load records that already have biblionumber set into a koha system
 # Written by TG on 10/04/2006
 use strict;
+#use warnings; FIXME - Bug 2505
 BEGIN {
     # find Koha's Perl modules
     # test carefully before changing this
@@ -19,6 +20,8 @@ use MARC::File::XML;
 use MARC::Batch;
 use Time::HiRes qw(gettimeofday);
 use Getopt::Long;
+use IO::File;
+
 my  $input_marc_file = '';
 my ($version);
 GetOptions(
@@ -45,14 +48,15 @@ my $timeneeded;
 my $dbh = C4::Context->dbh;
 
 my $sth2=$dbh->prepare("update biblioitems  set marc=? where biblionumber=?");
-my $batch = MARC::Batch->new( 'USMARC', $input_marc_file );
+my $fh = IO::File->new($input_marc_file); # don't let MARC::Batch open the file, as it applies the ':utf8' IO layer
+my $batch = MARC::Batch->new( 'USMARC', $fh );
 $batch->warnings_off();
 $batch->strict_off();
 my ($tagfield,$biblionumtagsubfield) = &GetMarcFromKohaField("biblio.biblionumber","");
 
 my $i=0;
 while ( my $record = $batch->next() ) {
-       my $biblionumber=$record->field($tagfield)->subfield($biblionumtagsubfield);
+    my $biblionumber = ($tagfield < 10) ? $record->field($tagfield)->data : $record->subfield($tagfield, $biblionumtagsubfield);
        $i++;
        $sth2->execute($record->as_usmarc,$biblionumber) if $biblionumber;
        print "$biblionumber \n";