On Sun, Jan 20, 2013 at 06:43:38PM +0100, samuel desseaux wrote: > *the goal is to join properly items with biblio records.
Let's assume that you have these two files: (B) Three MARC bibliographic records 1. 001 = 1029 2. 001 = 3884 3. 001 = 1650 (etc.) (I) Seven MARC item records 1. 001 = 1029 2. 001 = 1650 3. 001 = 1029 4. 001 = 3884 5. 001 = 3884 6. 001 = 1650 7. 001 = 1650 Do you want to produce a *new* file of three records, like this? 1. I1 + I3 2. I4 + I5 3. I2 + I6 + I7 Is this really what you want to have in the end? > As we have to separate files, it's a bit hard. With MarcEdit, if i > merge these two files, it's limited: marcedit doesn't understand that > one biblio record can have more than one item :-). I won't say any > more about my library and his exotical old ils i've moved for koha. It sounds as though what you *really* want in the end is a *single* file of three MARC records, like this: B1 + I1 + I3 B2 + I4 + I5 B3 + I2 + I6 + I7 Is that right? Here's a rough start in Perl: -------->8-------->8-------->8-------->8-------->8-------->8-------->8-------- use MARC::File; my ($file, %records); $file = MARC::File::USMARC->in($bib_records_file); while (my $bib_marc = read_next_record_from($file) { my $sysnum = sysnum($bib_marc); $records{$sysnum} = [ $bib_marc ]; } $file->close; $file = MARC::File::USMARC->in($bib_records_file); while (my $item_marc = read_next_record_from($file) { my $sysnum = sysnum($item_marc); push @{ $records{$sysnum} }, $item_marc; } $file->close; print @$_ for values %records; -------->8-------->8-------->8-------->8-------->8-------->8-------->8-------- Let us know if you need help writing read_next_record_from() or sysnum(). Paul. -- Paul Hoffman <nkui...@nkuitse.com>