on Wed, 29 May 2002 06:55:26 GMT, [EMAIL PROTECTED] (Leila Lappin) wrote:
> I need to write a subroutine that validates several fields and > returns one summary field containing names of what failed. An ideal solution would depend on the context of the problem (like e.g. whether the fields are coming from a CGI form), which you don't supply. A bare-bones solution could be along the following lines: #! perl -w use strict; my %valid = ( field1 => sub { $_[0] > 0 }, field2 => sub { length($_[0])}, field3 => sub { $_[0] =~ /^[a..z]+$/} ); sub validator { my $data = shift; my $valids = shift; my @result = (); for my $k (keys %$data) { push @result, $k unless $valids->{$k}($data->{$k}); } return @result; } my %dataset = ( field1 => 123, field2 => 'a', field3 => 'xYz' ); if (my @r = validator(\%dataset, \%valid)) { print "Following fields failed validation: @r\n"; } else { print "All fields validated.\n"; } -- felix -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]