#!/usr/bin/perl =head1 NAME xml2marc - convert LC SlimSchema XML to MARC21 =head1 SYNOPSIS # convert a file % xml2marc marc.xml > marc.dat. # or use in a pipeline % cat marc.xml | xml2marc > marc.dat =head1 DESCRIPTION xml2marc is a command line utility for converting XML that uses the Library of Congress Slim Schema to MARC21 bibliographic data. Conversion is handled using the MARC::Record and MARC::File::XML packages. =cut use strict; use warnings; use MARC::Batch; use MARC::File::XML; my $file = shift; my $fh; ## read from a file? if ( $file ) { fatal( "no such file: $file" ) if ! -r $file; $fh = IO::File->new( $file ); } ## or from STDIN? else { $fh = \*STDIN; } ## set up intput/output for utf8 encoding binmode( STDOUT, ':bytes' ); binmode( $fh, ':utf8' ); my $batch = MARC::Batch->new( 'XML', $fh ); while ( my $record = $batch->next() ) { print $record->as_usmarc(); } sub fatal { print STDERR shift, "\n"; exit( 1 ); }