BibTeX::Parser(3pm)

NAME
BibTeX::Parser - A pure perl BibTeX parser

SYNOPSIS
Parses BibTeX files.

    use BibTeX::Parser;
        use IO::File;

    my $fh = IO::File->new("filename");

    # Create parser object ...
    my $parser = BibTeX::Parser->new($fh, $opts);

    # ... and either iterate over entries
    while (my $entry = $parser->next ) {
            if ($entry->parse_ok) {
                    my $type    = $entry->type;
                    my $title   = $entry->field("title");

                    my @authors = $entry->author;
                    # or:
                    my @editors = $entry->editor;

                    foreach my $author (@authors) {
                            print $author->first . " "
                                . $author->von . " "
                                . $author->last . ", "
                                . $author->jr;
                    }
            } else {
                    warn "Error parsing file: " . $entry->error;
            }
    }

   # ... or read all entries at once
   $parser->read();
   my $num_entries = $parser->n();
   my $entrykeys = $parser->entrykeys();
   foreach my $key (@{$entrykeys}) {
      my $entry = $parser->entry($key);
      ...
   }
   if ($parser->has{'thekey') {
     $theentry = $parser->entry('thekey');
   }

DESCRIPTION
  There are two interfaces for BiBTeX::Parser: the serial one and
  the caching one.  The serial interface can be used for very large
  files.  It reads entries one by one, and outputs them using $parser->next()
  function.  In other cases you might be better off with the caching
  interface.  It reads all the entries at once, and can output the
  list of keys or the entry with the given key.

FUNCTIONS

  new
Creates new parser object.

Parameters:

        * fh: A filehandle

        * opts: a refernce to the hash of options.  Among other
          options is 'errorlevel', used in the caching interface when
          processing a non-parseable entry.  Can be 'warn' (the
          default), 'erorr', or 'ignore'.  Note that in serial
          interface the error processing is the responsibility of the
          user.

  next
Returns the next parsed entry or undef. Cannot be combined with the read interface described below.

  read
Read all the entries from the filehandle in the internal cache.

  n
Returns the number of entries after read function has been called

  entrykeys
Returns the array of keys after read function has been called

  entry
Returns an entry with the given key after read function has been called

Parameters:

    * key: the key

  has
Returns true if the cached file has the given entry

Parameters:

    * key: the key

NOTES
The fields "author" and "editor" are canonicalized, see BibTeX::Parser::Author.

SEE ALSO

•   BibTeX::Parser::Entry

•   BibTeX::Parser::Author

VERSION
version 1.95

AUTHOR
Gerhard Gossen <gerhard.gossen@googlemail.com> and Boris Veytsman <boris@varphi.com> and Karl Berry <karl@freefriends.org>

COPYRIGHT AND LICENSE
Copyright 2013-2026 Gerhard Gossen, Boris Veytsman, Karl Berry

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.