WELCOME TO Chess::PGN::Parse
   Chess::PGN::Parse is a module to parse chess games. PGN stands for
   Portable Game Notation and it is regulated by a standard
   (http://www.schachprobleme.de/chessml/faq/pgn/). It is among the
   preferred means of chess games distribution. Being a public, well
   established standard, PGN is understood by many chess archive programs.

INSTALLATION
   Standard module installation procedure. Unpack the compressed archive,
   and then run

   perl Makefile.PL
   make
   make test
   make install

USAGE
   Chess::PGN::Parse has a typical Perl Object Oriented interface. You need
   to create an object, and then use its methods.

   Simple usage:

           use Chess::PGN::Parse;
           my $pgnfile = "kk_2001.pgn"; # name of the file containing PGN games

           # create an object, passing the file name as parameter
           #
           my $pgn = new Chess::PGN::Parse $pgnfile
                   or die "can't open $pgnfile\n";

           # Then, we can loop through the games, using the
           # read_game() method.
           # No special parsing in this phase. The game is
           # returned as text, without checking for comments
           # or errors
           while ($pgn->read_game()) {
                   print $pgn->white, ", " , $pgn->black, ", ",
                           $pgn->result, ", ",
                           $pgn->game, "\n";
           }

   A more complete usage requires actual game parsing. After reading the
   game, a parse_game() method is called, and as a result we have the moves
   available in an array, comments and errors in two hashes, where the keys
   are the move numbers and the values are comments or errors.

           use Data::Dumper;
           while ($pgn->read_game()) {
               if ($pgn->parse_game({save_comments => 'yes',
                       log_errors => 'yes' }))
               {
               print Data::Dumper->Dump([$pgn->moves],["moves"]), "\n ";
               print Data::Dumper->Dump([$pgn->comments],["comments"]), "\n ";
               print Data::Dumper->Dump([$pgn->errors],["errors"]), "\n ";
               }
           }

   A simplified approach uses the built-in method read_all(), which reads
   and parses and returns an array of hashes with all the game details.

           use Chess::PGN::Parse;
           use Data::Dumper;
           my $pgnfile = "kk_2001.pgn";
           my $pgn = Chess::PGN::Parse->new $pgnfile
                   or die "can't open $pgnfile\n";
           my @games = $pgn->read_all({save_comments => 'yes',
                   log_errors => 'yes' });
           print Data::Dumper->Dump([\@games}],["games"]), "\n ";

DISTRIBUTION LIST
  Changes                       A change log for this module
  MANIFEST                      The list of included files
  README                        This file
  Makefile.PL                   The Perl makefile
  Parse.pm                      The module itself
  test.pl                       The test script
  examples/kk_2001.pgn          a sample collection of PGN games
  examples/kk_game4_test.pgn    a sample PGN file with most of the strange things
                                that a PGN could have, including errors
  examples/test_1_PGN.pl        a test script to show some features
  examples/test_2_PGN.pl        a more advanced test script
  examples/test_3_PGN.pl        a test script to parse a PGN from string
  examples/test_4_PGN.pl        a more advanced PGN string capability
                                with also examples of customized output
  examples/test_non_standard.pl Another test with some unorthodox input
                                to demonstrate how the enhanced version
                                can handle these things.
  examples/test_recursion.pl    A test of RAV recursive parsing

AUTHOR
   Chess::PGN::Parse is copyright (C) Giuseppe Maxia 2002. All rights
   reserved. Released under the GPL (GNU General Public License) version 2,
   April 1991.

   My contact for bugs, comments, advice: [email protected]