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 > Perl-Unix-Users@listserv.ActiveState.com > To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs > -- Anthony Ettinger Signature: http://chovy.dyndns.org/hcard.html _______________________________________________ Perl-Unix-Users mailing list Perl-Unix-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs