NAME Data::Formula - formulas evaluation and calculation SYNOPSIS my $df = Data::Formula->new( formula => 'var212 - var213 * var314 + var354', ); my $val = $df->calculate( var212 => 5, var213 => 10, var314 => 7, var354 => 100 ); # 5-(10*7)+100 my $df = Data::Formula->new( variables => [qw( var212 var213 n274 n294 var314 var334 var354 var374 var394 )], formula => 'var212 - var213 + var314 * (var354 + var394) - 10', on_error => undef, on_missing_token => 0, ); my $used_variables = $df->used_variables; # [ var212 var213 var314 var354 var394 ] my $val = $df->calculate( var212 => 5, var213 => 10, var314 => 2, var354 => 3, var394 => 9, ); # 5-10+2*(3+9)-10 DESCRIPTION evaluate and calulate formulas with variables of the type var212 - var213 + var314 * (var354 + var394) - 10 ACCESSORS formula Formula for calculation. Required. on_error Sets what should "calculate()" return in case of an error. When division by zero happens or unknown tokens are found. Can be a scalar value, like for example 0 or "undef", or a code ref that will be executed with error message as argument. Optional, if not set "calculate()" will throw an exception in case of an error. on_missing_token Sets what should happen when there is a missing/unknown token found in formula. Can be a scalar value, like fixed number, or a code ref that will be executed with token name as argument. Optional, if not set "calculate()" will throw an exception with unknown tokens. METHODS new() Object constructor. my $df = Data::Formula->new( formula => 'var212 - var213 * var314 + var354', ); used_variables() return array with variables used in formula calculate() Evaluate formula with values for variables, returns calculated value. Will throw expetion on division by zero of unknown variables, unless changes by "on_error" or "on_missing_token" AUTHOR Jozef Kutej, "" CONTRIBUTORS The following people have contributed to the File::is by committing their code, sending patches, reporting bugs, asking questions, suggesting useful advises, nitpicking, chatting on IRC or commenting on my blog (in no particular order): Andrea Pavlovic Thomas Klausner THANKS Thanks to VĂ–V - Verband Ă–sterreichischer Volkshochschulen for sponsoring development of this module. LICENSE AND COPYRIGHT This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License. See http://dev.perl.org/licenses/ for more information.