my %validate = ( INT => qr /^[+-]?\d+$/, DEC => qr /^[+-]?\d*\.?\d*$/, #etc. ); #### my %actions = ( INT => sub { return 1 if $_[0] =~ /^[+-]?\d+$/}, DEC => sub { return 1 if $_[0] =~ /^[+-]?\d*\.?\d*$/}, VARCHAR(5)=> \&validate_varchar_5(@_), #etc. );