Math::Expression version 1.18 ============================= This module solves the problem of evaluating expressions read from config/... files without the use of eval. String and arithmetic operators are supported, as are: conditions, arrays and functions. The name-space is managed (for security), user provided functions may be specified to set/get variable values. Error messages may be via a user provided function. This is not designed for high computation use. Quick example: use strict; use Math::Expression; my $ArithEnv = new Math::Expression; # Some/all of these read from a config file: my $tree1 = $ArithEnv->Parse('ConfVar := 42'); my $tree2 = $ArithEnv->Parse('ConfVar * 3'); ... $ArithEnv->Eval($tree1); my $ConfValue = $ArithEnv->EvalToScalar($tree2); For examples of use see the test program in the t/ directory. POD documentation is in the module. You install the module by running these commands: perl Makefile.PL make make test make install Please report any bugs/suggestions to Alain Williams It is understood that any contribution that is sent in for distribution with this module shall have copyright assigned to addw who will release it under the same licence as the rest of the module. Contributions will be acknowledged. You may get a bit more debugging/information from the test scripts by the use of environment options, so: Trace: TRACE=1 perl -Iblib/lib t/test.t The TRACE value can be 1 or 2. Print out the parse tree on error: ERR_TREE=1 perl -Iblib/lib t/test.t COPYRIGHT /\ / \ (C) Copyright 2003 Parliament Hill Computers Ltd. \ / All rights reserved. \/ . Author: Alain Williams, January 2003 . addw@phcomp.co.uk . . SCCS: @(#)README.in 1.4 03/05/07 13:16:10 This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. You must preserve this entire copyright notice in any use or distribution. The author makes no warranty what so ever that this code works or is fit for purpose: you are free to use this code on the understanding that any problems are your responsibility. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Note that the version number of this README may be different from the version of the module. The version number at the top of this file should correspond to the version number of the module at the time that it was bundled into a tar file.