Shlomi Fish


Games::LMSolve - base class for LM-Solve solvers factories


    package MyReg;

    use Games::LMSolve;

    @ISA = qw(Games::LMSolve);

    use MyPuzzle::Solver;

    sub register_all_solvers
        my $self = shift;

        $self->register_solvers({ 'mypuzzle' => "MyPuzzle::Solver"});


        return 0;

    package main;

    my $r = MyReg->new();


This class is a registry of Games::LMSolve::Base-derived solvers. It maps variants IDs to the classes. To use it, sub-class it and over-ride the register_all_solvers() function. In it use register_solvers while passing a reference to a hash that contains the variant IDs as keys and the class names, or constructor functions as values.

You can also use set_default_variant() to set the default variant.

After all that, in your main script initialize a registry object, and call the main() method.



The constructor. Accepts the following named arguments:

  • 'default_variant'

    The default variant for the registry to be used in case one is not specified.


Sets the default variant to $variant.


Adds the %solvers map of names to class names to the registry.


To be sub-classes to register all the solvers that the registry wants to register. Does nothing here.


the main function that handles the command line arguments and runs the program.


Games::LMSolve::Base - the LM-Solve homepage.


Please report any bugs or feature requests to bug-games-lmsolve at, or through the web interface at I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.


You can find documentation for this module with the perldoc command.

    perldoc Games::LMSolve

You can also look for information at:


Shlomi Fish,


Copyright 2002 Shlomi Fish, all rights reserved.

This program is released under the following license: MIT X11.