Badger::Logic
use Badger::Logic 'Logic'; my $logic = Logic('animal and (eats_nuts or eats_berries)'); my $values = { animal => 1, eats_nuts => 1, } if ($logic->test($values)) { print "This is an animal that eats nuts or berries\n"; }
This module implements a simple parser and evaluator for boolean logic expressions. It evolved from a piece of code that I originally wrote to handle role-based authentication in web applications.
This is a shortcut alias to Badger::Logic
.
use Badger::Logic 'LOGIC'; my $logic = LOGIC->new($expr); # same as Badger::Logic->new($expr);
This subroutine returns the name of the Badger::Logic
class
when called without arguments. Thus it can be used as an alias for
Badger::Logic
as per LOGIC.
use Badger::Logic 'Logic'; my $logic = Logic->new($expr); # same as Badger::Logic->new($expr);
When called with arguments, it creates a new Badger::Logic
object.
my $logic = Logic($expr); # same as Badger::Logic->new($expr);
Constructor method to create a new Badger::Logic
object from
an expression.
my $logic = Badger::Logic->new('animal and (cat or dog)');
Method to evaluate the expression. A reference to a hash array should be passed containing the values that the expression can test.
my $values = { animal => 1, cat => 1, }; if ($logic->evaluate($values)) { print "This animal is a cat or a dog\n"; }
Returns a reference to the root of a tree of
Badger::Logic::Node
objects that represent the parsed
expression.
Main method to parse a logical expression. This calls parse_expr() and then checks that all of
the text has been successfully parsed. It returns a reference to a
Badger::Logic::Node
object.
Andy Wardley http://wardley.org