=cut
sub ut_zip {
- my( $self, $field ) = @_;
- $self->getfield($field) =~ /^\s*(\w[\w\-\s]{2,8}\w)\s*$/
- or return "Illegal (zip) $field: ". $self->getfield($field);
- $self->setfield($field,$1);
+ my( $self, $field, $country ) = @_;
+ if ( $country eq 'US' ) {
+ $self->getfield($field) =~ /\s*(\d{5}(\-\d{4})?)\s*$/
+ or return "Illegal (zip) $field for country $country: ".
+ $self->getfield($field);
+ $self->setfield($field,$1);
+ } else {
+ $self->getfield($field) =~ /^\s*(\w[\w\-\s]{2,8}\w)\s*$/
+ or return "Illegal (zip) $field: ". $self->getfield($field);
+ $self->setfield($field,$1);
+ }
'';
}
=cut
sub ut_anything {
- my($self,$field)=@_;
+ my( $self, $field ) = @_;
$self->getfield($field) =~ /^(.*)$/s
or return "Illegal $field: ". $self->getfield($field);
$self->setfield($field,$1);
'';
}
+=item ut_enum COLUMN CHOICES_ARRAYREF
+
+Check/untaint a column, supplying all possible choices, like the "enum" type.
+
+=cut
+
+sub ut_enum {
+ my( $self, $field, $choices ) = @_;
+ foreach my $choice ( @$choices ) {
+ if ( $self->getfield($field) eq $choice ) {
+ $self->setfield($choice);
+ return '';
+ }
+ }
+ return "Illegal (enum) field $field: ". $self->getfield($field);
+}
+
=item fields [ TABLE ]
This can be used as both a subroutine and a method call. It returns a list
}
#croak "Usage: \@fields = fields(\$table)\n or: \@fields = \$record->fields" unless $table;
my($table_obj) = $dbdef->table($table);
- croak "Unknown table $table" unless $table_obj;
+ confess "Unknown table $table" unless $table_obj;
$table_obj->columns;
}
=head1 VERSION
-$Id: Record.pm,v 1.25 2001-08-21 09:34:13 ivan Exp $
+$Id: Record.pm,v 1.28 2001-09-14 18:05:16 ivan Exp $
=head1 BUGS