Provided by: libmarc-fast-perl_0.12-2_all bug

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).