NAME Data::Validate::WithYAML - Validation framework that can be configured with YAML files VERSION version 0.20 SYNOPSIS Perhaps a little code snippet. use Data::Validate::WithYAML; my $foo = Data::Validate::WithYAML->new( 'test.yml' ); my %map = ( name => 'Test Person', password => 'xasdfjakslr453$', plz => 64569, word => 'Herr', age => 55, ); for my $field ( keys %map ){ print "ok: ",$map{$field},"\n" if $foo->check( $field, $map{$field} ); } data.yml --- step1: name: type: required length: 8,122 password: type: required length: 10, plz: regex: ^\d{4,5}$ type: optional word: enum: - Herr - Frau - Firma age: type: required min: 18 max: 65 METHODS new my $foo = Data::Validate::WithYAML->new( 'filename' ); my $foo = Data::Validate::WithYAML->new( 'filename', allow_subs => 1, no_steps => 1, ); creates a new object. set_optional This method makes a field optional if it was required set_required This method makes a field required if it was optional validate This subroutine validates one form. You have to pass the form name (key in the config file), a hash with fieldnames and its values my %fields = ( username => $cgi->param('user'), passwort => $password, ); $foo->validate( 'step1', %fields ); fieldnames errstr message returns the message if specified in YAML $obj->message( 'fieldname' ); check_list $obj->check_list('fieldname',['value','value2']); Checks if the values match the validation criteria. Returns an arrayref with checkresults: [ 1, 0, ] check $obj->check('fieldname','value'); checks if a value is valid. returns 1 if the value is valid, otherwise it returns 0. fieldinfo Returns the config for the given field. Your test.yml: --- age: type: required min: 18 max: 65 Your script: my $info = $validator->fieldinfo( 'age' ); $info is a hashreference then: { type => 'required', min => 18, max => 65, } FIELDCONFIG These config options can be used to configure a field: * type mandatory. It defines if a value is required or optional * regex A value for this field is valid if the value matches this regular expression * min For numeric fields. A valid value must be greater than the value given for min * max Also for numeric fields. A valid value must be lower than the value given for max * enum A list of valid values. * sub e.g. sub: { $_ eq 'test' } A codeblock that is evaled. You can only use this option when you set allow_subs in constructor call. * length A value for the field must be of length within this range length: 1, longer than 1 char. length: 3,5 length must be between 3 and 5 chars length: ,5 Value must be at longest 5 chars. length: 3 Length must be exactly 3 chars * depends_on Change the config for a field depending on an other field. This only works when validate is called. * case List of values the field it depends on can have. In case the field it depends on has a value listed in case, the default config for the file is changed. password: type: required length: 1, depends_on: group case: admin: length: 10, agent: length: 5, If the value for group is "admin", the given password must be longer than 10 chars, for agents the password must be longer than 5 chars and for every other group the password must be longer than 1 char. * depends_lax Without this setting, a value for the field this field depends on must be given. * datatype For a few types of values there are predefined checks. * num * int * positive_int * plugin Use a plugin (e.g. Data::Validate::WithYAML::Plugin::EMail) to check the value. plugin: EMail AUTHOR Renee Baecker COPYRIGHT AND LICENSE This software is Copyright (c) 2014 by Renee Baecker. This is free software, licensed under: The Artistic License 2.0 (GPL Compatible)