WWW::FieldValidator - Provides simple validation of user entered input
OO module that is used to validate input.
This module is used by WWW::Form to perform various validations on input. This document covers using the WWW::FieldValidator module as part of a Form object. In this case, the only thing you need to know how to do is to instantiate WWW::FieldValidators properly. All the validation is handled internally by WWW::Form.
new( $validatorType, $errorFeedback, [$minLength, $maxLength, $regex], [$isOptional] )
Creates a FieldValidator object. $validatorType is used to determine what type of validation will be performed on the input. The following validator types are supported (Note these are constants, the $validatorType param needs to be one of the following values):
# Input must conform to /^[\w\-\.\+]+@(\w+)(\.([\w\-]+))+$/ WWW::FieldValidator::WELL_FORMED_EMAIL # Input must be >= a specified string length WWW::FieldValidator::MIN_STR_LENGTH # Input must be <= a specified string length WWW::FieldValidator::MAX_STR_LENGTH # Input must match a user defined regex WWW::FieldValidator::REGEX_MATCH # Input must pass a user defined subroutine's validation WWW::FieldValidator::USER_DEFINED_SUB Examples: # Create a validator that checks to see if input is a well formed email # address WWW::FieldValidator->new( WWW::FieldValidator::WELL_FORMED_EMAIL, 'Please make sure you enter a well formed email address' ); # Creates a validator that checks to see if input is well formed only if # input is not null (or numm string) WWW::FieldValidator->new( WWW::FieldValidator::WELL_FORMED_EMAIL, 'Please make sure you enter a well formed email address', $isOptional = 1 ); # Creates a validator that checks to see if the input is at least min length WWW::FieldValidator->new( WWW::FieldValidator::MIN_STR_LENGTH, 'Please make sure you enter something at least 10 characters long', 10 ); # Creates a validator that checks to see if the input is at least min length # only if input is not null or null string WWW::FieldValidator->new( WWW::FieldValidator::MIN_STR_LENGTH, 'Please make sure you enter something at least 10 characters long', 10, 1 ); # Creates a validator that checks to see if the input is less than max # length WWW::FieldValidator->new( WWW::FieldValidator::MAX_STR_LENGTH, 'Please enter something less than or equal to 5 characters', 5 ); # Creates a validator that checks to see if the input is less than max # length only if input is not null or null string WWW::FieldValidator->new( WWW::FieldValidator::MAX_STR_LENGTH, 'Please enter something less than or equal to 5 characters', 5, 1 ); # Creates a validator that checks to see if the input matches the specified # regex WWW::FieldValidator->new( WWW::FieldValidator::REGEX_MATCH, 'Please make sure you enter a number', ^\d+$|^\d+\.\d*$|^\d*\.\d+$' ); # Creates a validator that checks to see if the input matches the # specified regex only if input is not null or null string WWW::FieldValidator->new( WWW::FieldValidator::REGEX_MATCH, 'If you\'re going to enter anything, please enter a number', ^\d+$|^\d+\.\d*$|^\d*\.\d+$', 1 ); # Creates a validator that checks to see if the input is good according to # sub ref WWW::FieldValidator->new( WWW::FieldValidator::USER_DEFINED_SUB, 'The name you entered already exists', \&is_name_unique ); # Creates a validator that checks to see if the input is good according to # sub ref only if input is not null or null string WWW::FieldValidator->new( WWW::FieldValidator::USER_DEFINED_SUB, 'If you\'re entering a name, enter one that doesn\'t already exist', \&is_name_unique, 1 ); # If you use the validator type: USER_DEFINED_SUB, your subroutine will have # access to the value of the form input that your validator is assigned to Example: sub is_name_unique { # gets passed in to this sub for you by way of Form module my $name = shift; if ($names->{$name}) { return 0; # name already exists, input is invalid } else { return 1; } }
If you want to use WWW::FieldValidator outside of WWW::Form it's easy to do. The only method you need to use is validate.
validate($input)
Returns true if $input passes validation or false otherwise.
Example: my $email_validator = WWW::FieldValidator->new( WWW::FieldValidator::WELL_FORMED_EMAIL, 'Please make sure you enter a well formed email address' ); my $params = $r->param(); if (my $email = $params->{email}) { unless ($email_validator->validate($email)) { print $email_validator->getFeedback(); } }
getFeedback()
Returns error feedback for a FieldValidator. This can also be called as get_feedback().
WWW::Form
To install WWW::Form, copy and paste the appropriate command in to your terminal.
cpanm
cpanm WWW::Form
CPAN shell
perl -MCPAN -e shell install WWW::Form
For more information on module installation, please visit the detailed CPAN module installation guide.