NAME
   Chess::Pgn - Perl extension for manipulation of chess PGN format. PGN is
   for Portable Game Notation and follow the *Portable Game Notation
   Specification and Implementation Guide* revised 1994.03.12. You can find
   it at the section on "/members.nbci.com/sghudson/standard.txt" in the
   http: manpage.

   The goal of this module is not to play chess but to help to manipulate
   PGN File.

   A PGN file is like this :

    [Event "?"]
    [Site "?"]
    [Date "????.??.??"]
    [Round "?"]
    [White "Greco"]
    [Black "NN"]
    [Result "1-0"]
    [ECO "C57"]

    1.e4 e5 2.Nf3 Nc6 3.Bc4 Nf6 4.Ng5 d5 5.exd5 Nxd5 6.Nxf7 Kxf7 7.Qf3+ Ke6
    8.Nc3 Ne7 9.O-O c6 10.Re1 Bd7 11.d4 Kd6 12.Rxe5 Ng6 13.Nxd5 Nxe5
    14.dxe5+ Kc5 15.Qa3+ Kxc4 16.Qd3+ Kc5 17.b4# 1-0

    [Event "?"]
    [Site "corr CS ch 22 (FS"]
    [Date "????.??.??"]
    [Round "12.0"]
    [White "Rosenzweig V"]
    [Black "Necesany Z"]
    [Result "1/2-1/2"]
    [ECO "C55"]

    1.e4 e5 2.Nf3 Nc6 3.Bc4 Nf6 4.O-O Be7 5.Nc3 Nxe4 6.Nxe4 d5 7.d4 dxc4
    8.d5 Nd4 9.Nxd4 Qxd5 10.Nf3 Qxe4 11.Re1 Qc6 12.Nxe5 Qf6 13.Bd2 O-O
    14.Bc3 Bc5 15.Re2 Qf5 16.Qd5 Bd6 17.Rae1 Be6 18.Qxb7 f6 19.Nc6 Bd5
    20.Rd2 Bxg2 21.Rxd6 Bxc6 22.Rxc6 Qg4+ 1/2-1/2

   With Chess:Pgn you will find a game by $game->date or $game->game. For
   our last example we will have

    $game->date : "????.??.??"
    $game->game : "1.e4 e5 2.Nf3 Nc6 3.Bc4 Nf6 4.Ng5 d5 5.exd5 Nxd5 6.Nxf7 Kxf7 7.Qf3+ Ke6
    8.Nc3 Ne7 9.O-O c6 10.Re1 Bd7 11.d4 Kd6 12.Rxe5 Ng6 13.Nxd5 Nxe5
    14.dxe5+ Kc5 15.Qa3+ Kxc4 16.Qd3+ Kc5 17.b4# 1-0"

   The module provide a good set of tools to modify PGN File but you will
   have to make yourself the while :)

SYNOPSIS
    use Chess::Pgn;
    $p = new Chess::Pgn("2KTSDEF.PGN" ) || die "2KTSDEF.PGN not found";
    while ( $p->ReadGame )
     {
      print $p->white ,"<=>",$p->black, "\n";
     }
    $p->quit();

    $p->white(Kouatly);
    $p->black(Kasparov);

DESCRIPTION
   new
     $p= new Chess::Pgn ("name")

    open the file *name* and if it doesn't exist return undef.

   ReadGame
     $p->ReadGame

    This method read just one game and return undef at the end of file. You
    must use methods to read the game.

   quit
     $p->quit

    Close the PGN file

   Methods
     site, date, round, white, black, result, eco, game :

    return the value of the current game.

     $p->black return Greco

   set a value
    You can change a value if you put a argument to the method.

    For example :

     $p->black("Gilles Maire")

    will change the value of the black opponent. But just in memory ! You
    will need to write of file to save it.

   variable
    You can access to method value bye the hash

      $p->{Event}, $p->{Site} , p->{Date} ,p->{Round},$p->{White},$p->{Black},
      $p->{Result}, $p->{ECO},$p->{Game}.

 EXPORT

   None by default.

AUTHOR
   Gilles Maire

   [email protected]

SEE ALSO
   perl(1).