On 3/1/06, $Bill Luebkert <[EMAIL PROTECTED]> wrote:
> listmail wrote:
> > #!/usr/bin/perl -w
> > use strict;
> > use warnings;
> >
> > my %hash = ( "acc12", 1,
> > "acc2", 0,
> > "acc3", '',
> > "una1", 1 );
> >
> > $hash{acc3} = ();
> >
> > my $valid="acc1|acc2|acc3";
my @valid = qw( acc1 acc2 acc3 );
> > while (my ($key, $value) = each (%hash)) {
foeach my $key (keys %hash){
if (grep/$key/ @valid) {
// do something
} else {
print "$key is invalid\n";
}
}
> > if ($key !~ $valid) {
> > print "Invalid Key: $key, ";
> > } else {
> > print "Valid Key: $key, ";
> > }
> >
> > if (defined($value)) {
> > print "Value defined for $key: $value\n";
> > } else {
> > print "Value undefined for $key\n";
> > }
> > }
> >
> > # Trying to minimize code to validate keys and values. I'm not sure you
> > can do exact
> > # matching with regex. Can validation for specific key names be done
> > for each key
> > # without using multiple IF statements?
>
> I would think if you just want valid and defined you could use:
>
> if ($key !~ /$valid/ and defined $value) {
>
> > # Valid keys: acc1, acc2, acc3
> > # Values must be defined
> > #
> > # expected results:
> > # una1 should be invalid
> > # acc12 should be invalid
> > # acc3 should be valid, key value should not be undefined
> > # acc2 should be valid
>
> Modified version:
>
> use strict;
> use warnings;
>
> my %hash = ('acc12' => 1, 'acc2' => 0, 'acc3' => undef, 'una1' => 1);
> my $valid = '^(acc1|acc2|acc3)$';
>
> while (my ($key, $value) = each %hash) {
>
> if ($key !~ /$valid/) {
> print "Invalid Key: $key, ";
> } else {
> print "Valid Key: $key, ";
> }
>
> if (defined $value) {
> print "Value defined for $key: $value\n";
> } else {
> print "Value undefined for $key\n";
> }
> }
>
> __END__
> _______________________________________________
> Perl-Unix-Users mailing list
> [email protected]
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
>
--
Anthony Ettinger
Signature: http://chovy.dyndns.org/hcard.html
_______________________________________________
Perl-Unix-Users mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs