NAME

BooleanEval - Boolean expression parser.

SYNOPSIS

use Math::BooleanEval;
my $bool = Math::BooleanEval->new('yes|no');

# evaluate each defined item in the expression to 1 or 0
foreach my $item (@{$bool->{'arr'}}){
   next unless defined $item;
   $item = ($item =~ m/^no|off|false|null$/i) ? 1 : 0;
}

# evaluate the expression
print $bool->eval();

DESCRIPTION

BooleanEval parses a boolean expression and creates an array of elements in the expression. By setting each element to 1 or 0 you can evaluate the expression. The expression is parsed on the standard boolean delimiters:

& | () ! ? :

Using BooleanEval involves three steps: instantiate an object, loop through the elements of the expression setting each to 1 or 0, then calling eval();

To create a new object, call new(), passing the expression as the single argument:

$bool = BooleanEval->new('yes|no');

Generally the easiest way to set each element is to use a foreach loop:

 foreach my $item (@{$bool->{'arr'}}){
    next unless defined $item;
	$item = ($item =~ m/^no|off|false|null$/i) ? 1 : 0;
 }

Notice that the first thing to do at the top of the loop is to check if the item is defined. If it is not defined leave it as it is. Otherwise, use the item for whatever checks you like. In the example above we test if the item is one of the standard English words for false. Set the item to 1 or 0, nothing else.

Finally, get the evaluation of the expression with the eval() method:

print $bool->eval();

PUBLIC INTERFACE

Math::BooleanEval->new(expression)

Instantiates a BooleanEval object.

eval()

Evaluates the expression. By the time you call this method you should have set all elements in the {'arr'} array to 1, 0, or left them undefined if that's how they were to begin with. See examples above.

syntaxcheck()

Returns true if the expression is syntacally valid, false if not. For example, "Me & You" would return true but "Me & | You" would return false.

TERMS AND CONDITIONS

Copyright (c) 2000 by Miko O'Sullivan. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. This software comes with NO WARRANTY of any kind.

AUTHOR

Miko O'Sullivan miko@idocs.com

Created: Sometime around the end of the twentieth century. I'm kind of vague on the exact date.

VERSION

Version 0.91 Oct 15, 2001

HISTORY

Version 0.9 December 18, 2000

Original release.

Version 0.91 Oct 15, 2001

Same as 0.9, but hopefully more properly packaged for CPAN. We'll see.