Ack, sorry, various copying and pasting apparently caused Google Mail to
have issues.

As I as was saying,before I must have hit some keystroke that I'm sure
makes sense in whatever editor I was just susing:

Instead of having:

open(OUTPUT, ">$outfile");


... (whole bunch o code)


  print OUTPUT $record->as_usmarc();

I would do

open $output_marc, '>:raw', $outfile or die "Couldn't open file $!" ;

print $output_marc $record->as_usmarc() ;

(or I might play with binmode).

Sorry for any confusion with the two emails ;)

Jon G




On Fri, Nov 13, 2015 at 2:01 PM, Highsmith, Anne L <hism...@library.tamu.edu
> wrote:

> This is related to my previous post (9/17/2015) about deleting 035 fields
> after RDA-ification. Jon Gorman solved that one for me by pointing out that
> I probably had a problem with my perl libraries.
>
>
>
> But now, instead of creating the record from the database and writing it
> back to the database, I am reading from a file exported from my database,
> which is UTF-8. Specifically, the blasted copyright symbol again. As stored
> in the database, the copyright symbol is encoded as C2 A9, which if I read
> the tables correctly, is the correct UTF-8 encoding for copyright. But when
> I read the record from a file and write it back to the file after deleting
> the problematic 035, the encoding for the copyright symbol has been turned
> into A9.
>
>
>
> This “transformation” happens both when running the perl program on my pc
> and on the unix server. Interestingly, complicated Unicode seems to be
> okay. I took a record with Hebrew vernacular characters and edited it using
> my program, then ran the source record and target record through xxd. I
> then diffed the files; it showed no difference. But the before and after of
> the record that has the copyright symbol munges the copyright by stripping
> the C2.
>
>
>
> Here’s the program. If anybody can tell my what I’m doing wrong I’d really
> appreciate it.
>
>
> ----------------------------------------------------------------------------------------------------------
>
> use strict;
>
> use warnings;
>
> use MARC::Record;
>
> use MARC::Batch;
>
> my $infile='4788022.bib';
>
> my $batch = MARC::Batch->new('USMARC',"$infile");
>
> my $outfile='4788022.edited.bib';
>
> open(OUTPUT, ">$outfile");
>
>
>
> while (my $record = $batch->next) {
>
>      my $f001 = $record->field('001');
>
>      my $bib_id = $f001->as_string();
>
>
>
>      my @a035 = $record->field('035');
>
>      foreach my $f035 (@a035) {
>
>            if (my $f035a = $f035->subfield('a')) {
>
>                 if ($f035a eq $bib_id) {
>
>                      $record->delete_field($f035);
>
>                 }
>
>            }
>
>      }
>
>      print OUTPUT $record->as_usmarc();
>
> }
>
>
>
>
>
>
>
> Anne L. Highsmith
>
> Director, Consortia Systems
>
> TAMU Libraries
>
> 5000 TAMU
>
> College Station, TX   77843-5000
>
> 979 862 4234
>
> hism...@tamu.edu
>

Reply via email to