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: gmax@cpan.org