my $ca_obj = shift; # CGI::Application object my $q = $ca_obj->query(); my $dfv_profile = { required => [qw (userid)], constraints => { userid => { name => 'userid_exists', constraint => sub { return !MyDBITools->user_exists($ca_obj); }, }, userid => { name => 'userid_untaint', constraint => qr/^[-\@\w.]+$/, }, }, msgs => { format => '%s', constraints => { 'userid_exists' => "User ID already exists.", 'userid_untaint'=> "User ID contains bad stuff", }, }, }; my $results = Data::FormValidator->check($q, $dfv_profile);