I have a web form where people enter their address info and I want to 
make sure that the first three digits of their Zip Code correspond to their 
State.

        So I'm creating a hash of arrays that contains a list of Zip Codes for 
the United States.  I've also written a foreach loop to access this hash but 
I'd like to see if it could be written better.  For example, do I really need 
three foreach loops?

        Also, the first line that's printed contains "499" and I can't figure 
out where that's coming from.

        I'd appreciate some help.

Thanks,
Marc



#!/Users/perl5/perlbrew/perls/perl-5.14.1/bin/perl
use strict;
use warnings;

my %states = (
        AL => [ '350','351', ],
        AK => [ '995','996', ],
        AZ => [ '850','851', ],
        AR => [ '716','717', ],
);

my $customers_state = 'AZ';
my $customers_zip = '850';
my $match = 'no' ;

STATE:  foreach my $state (keys %states) {
#                       print "$state \n";
                        if ($state eq $customers_state) {
                                foreach (@{$states{$customers_state}}) {
                                        my @zips = $_;
ZIP:                            foreach my $zip (@zips) {
                                                next ZIP if $zip ne 
$customers_zip;
                                                        $match = 'yes';
#                                                       print "\nZip matches 
the State \n";
                                        }
                                }
                        last STATE;
                        }
                }
print $match;

########################

SAMPLE OUTPUT:

499
yes


--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to