На CPAN есть вот такой замечательный модуль для валидации данных (!) MojoX::Validate . Как видно из названия модуль предназначен для использования в фреймворке Mojolicious. Однако и отдельно от него он прекрасно работает, хотя и тащит за собой Mojo =(.
Пример использования:
use MojoX::Validator;
#создаем новый объект
my $validator = MojoX::Validator->new;
#массовое добавдение полей для проверки
$validator->field([qw/ID USER_ID/])->each(sub{
shift->required(1)->regexp(qr/^\d+$/)
});
#правило для одного поля
$validator->field('NAME')->length(1,20);
#валидируем
$validator->validate({NAME => $name});
#получаем ошибки
$validator->errors;
Маленькая особенность.
Если в конструкции:
$validator->field([qw/ID USER_ID/])->each(sub{
shift->required(1)->regexp(qr/^\d+$/)
});
указать только одно поле (в списке полей) — работать не будет!
Для одного поля используйте запись вида:
$validator->field('NAME')->length(1,20);