my $nonempty = sub { shift() ne '' }; my $check_params = { client1 => sub { validate( @_, { var1 => { type => SCALAR, # a scalar ... callbacks => { # and is non-empty 'not empty' => $nonempty, }, }, var2 => { type => SCALAR, # a scalar ... callbacks => { # and is non-empty 'not empty' => $nonempty, }, }, } ); }, client2 => sub { # more of the same }, }; my %vars; my @varnames = $q->param; @vars{@varnames} = map { $q->param($_) } @varnames; $check_params->{$client}->(%vars);