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

    Gilles.Maire@ungi.net

SEE ALSO
    perl(1).

