use Validate::Hash; my $vh = new Validate::Hash( required => ['Fred', 'Wilma'], optional => ['Barney', 'Betty'], verify => {Barney => qr/\d+/, Fred => qr/\w+/}, -errs => {illegal => "#KEY# is illegal", required => "#KEY# is required!", notmatch => "the value #KEY#, #VALUE#, doesn't match /#PATTERN#/", -strict => 1, ); my %hash = (Fred => 'A', Barney => 1); $vh->valid(\%hash); # returns false, $vh->get_error(); # returns 'Wilma is required!'