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

Reply via email to