Curiouser and curiouser... Using just the following code: ------------------------ #!/usr/bin/perl
use MARC::File::USMARC; my $cnt = 0; my $file = MARC::File::USMARC->in( $ARGV[0] ); while ( my $oldmarc = $file->next() ) { last if $cnt > 5; # Just for testing.... $cnt++; print $oldmarc->as_usmarc(); } ------------------------ ...we get the same problem (and I apologize - it's actually \x1e\x1d, not \x0d\x0e as I (mis)typed earlier) It looks like the as_usmarc might be adding an extra end-of-record...? Maybe? If I change it to this: ----------------------- # print $oldmarc->as_usmarc(); my $string = $oldmarc->as_usmarc(); $string =~ s/\x1e\x1d\x1e\x1d/\x1e\x1d/; print $string; ----------------------- ...then the resulting file looks right. I don't know if this is a problem with my source data, or if I'm not doing something MARC::Record-y properly. Windows XP, ActiveState Perl, MARC::Record 1.38 Any thoughts? I can send a small MARC file (5 recs) if anyone would like to take a peek. Thanks, -David