| FormValidator-Simple-Plugin-Math documentation | Contained in the FormValidator-Simple-Plugin-Math distribution. |
FormValidator::Simple::Plugin::Math - Math evaluation for FormValidator::Simple
Version 0.03
You can evalute the form data with math expression.
use FormValidator::Simple qw/Math/;
my $result = FormValidator::Simple->check( $req => [
category => [ 'NOT_BLANK', ['MATH', 'x % 100', '!0']],
### valid if category % 100 != 0
]);
['MATH', some_math_expression, is_what]
x is the value to be passed. e.g. x**3
Sets some number.
Switches the true-false evaluation if is_what starts with !.
Yusuke Sugiyama, <ally at blinkingstar.net>
Please report any bugs or feature requests to
bug-formvalidator-simple-plugin-math at rt.cpan.org, or through the web interface at
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=FormValidator-Simple-Plugin-Math.
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 FormValidator::Simple::Plugin::Math
You can also look for information at:
http://cpanratings.perl.org/d/FormValidator-Simple-Plugin-Math
http://rt.cpan.org/NoAuth/Bugs.html?Dist=FormValidator-Simple-Plugin-Math
http://search.cpan.org/dist/FormValidator-Simple-Plugin-Math
Copyright 2007 Yusuke Sugiyama, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| FormValidator-Simple-Plugin-Math documentation | Contained in the FormValidator-Simple-Plugin-Math distribution. |
package FormValidator::Simple::Plugin::Math; use warnings; use strict; use FormValidator::Simple::Constants; use Math::Expression;
our $VERSION = '0.03';
sub MATH{ my ($self, $params, $args) = @_; my $calc = $args->[0] || 0; my $equals = $args->[1] || 0; my $data = $params->[0]; my $is = TRUE; my $is_not = FALSE; if ($equals =~ /^\!(\d+?)$/){ $equals = $1; $is = FALSE; $is_not = TRUE; } elsif ($equals eq '!'){ $equals = 0; $is = FALSE; $is_not = TRUE; } if ($equals =~ /[^\d]/ || $data =~ /[^\d]/){ return TRUE; } my $m = new Math::Expression; $m->VarSetScalar('x',$data); my $mtree = $m->Parse($calc); my $value = $m->EvalToScalar($mtree); return ($value == $equals) ? $is : $is_not; }
1; # End of FormValidator::Simple::Plugin::Math