Provided by: libmarc-fast-perl_0.12-2_all
NAME
MARC::Fast - Very fast implementation of MARC database reader
SYNOPSIS
use MARC::Fast; my $marc = new MARC::Fast( marcdb => 'unimarc.iso', ); foreach my $mfn ( 1 .. $marc->count ) { print $marc->to_ascii( $mfn ); } For longer example with command line options look at "dump_fastmarc.pl" in scripts
DESCRIPTION
This is very fast alternative to "MARC" and "MARC::Record" modules. It's is also very subtable for random access to MARC records (as opposed to sequential one).
METHODS
new Read MARC database my $marc = new MARC::Fast( marcdb => 'unimarc.iso', quiet => 0, debug => 0, assert => 0, hash_filter => sub { my ($t, $record_number) = @_; $t =~ s/foo/bar/; return $t; }, ); count Return number of records in database print $marc->count; fetch Fetch record from database my $hash = $marc->fetch(42); First record number is 1 last_leader Returns leader of last record fetched print $marc->last_leader; Added in version 0.08 of this module, so if you need it use: use MARC::Fast 0.08; to be sure that it's supported. to_hash Read record with specified MFN and convert it to hash my $hash = $marc->to_hash( $mfn, include_subfields => 1, hash_filter => sub { my ($l,$tag) = @_; return $l; } ); It has ability to convert characters (using "hash_filter") from MARC database before creating structures enabling character re-mapping or quick fix-up of data. If you specified "hash_filter" both in "new" and "to_hash" only the one from "to_hash" will be used. This function returns hash which is like this: '200' => [ { 'i1' => '1', 'i2' => ' ' 'a' => 'Goa', 'f' => 'Valdo D\'Arienzo', 'e' => 'tipografie e tipografi nel XVI secolo', } ], This method will also create additional field 000 with MFN. to_ascii print $marc->to_ascii( 42 );
UTF-8 ENCODING
This module does nothing with encoding. But, since MARC format is byte oriented even when using UTF-8 which has variable number of bytes for each character, file is opened in binary mode. As a result, all scalars recturned to perl don't have utf-8 flag. Solution is to use "hash_filter" and Encode to decode utf-8 encoding like this: use Encode; my $marc = new MARC::Fast( marcdb => 'utf8.marc', hash_filter => sub { Encode::decode( 'utf-8', $_[0] ); }, ); This will affect "to_hash", but "fetch" will still return binary representation since it doesn't support "hash_filter".
AUTHOR
Dobrica Pavlinusic CPAN ID: DPAVLIN dpavlin@rot13.org http://www.rot13.org/~dpavlin/
COPYRIGHT
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of the license can be found in the LICENSE file included with this module.
SEE ALSO
Biblio::Isis, perl(1).