#!/usr/bin/perl use LWP::Simple; use LWP::UserAgent; use HTTP::Request::Common; use Data::Dumper; #declare my @addressSave = (); my $printCSZ = ""; my $printPO = ""; my $printADD = ""; my $printSuite = ""; my $i = 0; my $poBoX = ""; my $data = ""; my $data1 = ""; my $city = ""; my $city1 = ""; my $state = ""; my $state1 = ""; my $zip = ""; my $zip1 = ""; my $address = ""; my @invalidAdd = (); my $arrayLength = ""; #read in my $filename = ('addresses.txt'); my $txtContent = ""; open(IN, '<', $filename); while(my $line = ){ $txtContent .= $line; } close(IN); #split my @addresses = split(m/[\r]+/, $txtContent); my $addressL = scalar(@addresses); print $addressL . "\n"; #Save Address Elements to scalars while($i < $addressL){ $address = @addresses[$i]; if($address =~ /(\w+\s*\w*)\S\s(\w\w)\s(\d+)-*\d*/){ $state = $2; $city = $1; $zip = $3; $city1 = $city; $state1 = $state; $zip1 = $zip; } elsif($address =~ /(po\sbox\s\d+)/i){ $poBox = $1; $printPO = $poBox } elsif($address =~ /(\w*\D*\d+[\d\s\w.,#]+)/){ my $addressNum = $1; $printADD .= $addressNum . "\n"; } elsif($address =~ /(\w+[\w\s]+)/i){ $data = "$1\n"; $data1 .= $data; } if($address =~ /(suite\s\d+)/i){ $suite = $1; $printSuite = $suite; } if(($address =~ /(suite\s\d+)/i) && ($printSuite =~ /(suite\s\d+)/i)){ $printSuite = ""; } #Run if there are values if($city1 eq ""){ } else{ while($city1 =~ s/[\s]+/+/){}; while($state1 =~ s/[\s]+/+/){}; while($zip1 =~ s/[\s]+/+/){}; while($printPO =~ s/[\s]+/+/){}; while($printADD =~ s/[\s]+/+/){}; while($printSuite =~ s/[\s]+/+/){}; while($data1 =~ s/[\s]+/+/){}; my %address =( 'City' => "$city1", 'State' => "$state1", 'Zip' => "$zip1", 'Address' => "$printADD", 'PoBox' => "$printPO", 'Suite' => "$printSuite", 'MiscData' => "$data1"); save(\%address, \@addressSave); #TASK #### Save scalar values to a hash #### save hash values to an array #### post hash values to USPS #### Verify #### RED flag if address is not real #### Separate bad values from good values $printPO = ""; $printADD = ""; $printSuite = ""; $city1= ""; $state1 = ""; $zip1 = ""; $data1 = ""; } $i++; } #Verify if Values are correct form(\@addressSave, \@invalidAdd); #Write updated Database $filename1 = ('addresssUpdate.txt'); open(IN, '>', $filename1); $i = 0; my $arrayLength = scalar(@addressSave); while($i < $arrayLength){ while($addressSave[$i]->{City} =~ s/[+]+/ /){}; while($addressSave[$i]->{State} =~ s/[+]+/ /){}; while($addressSave[$i]->{Zip} =~ s/[+]+/ /){}; while($addressSave[$i]->{Address} =~ s/[+]+/ /){}; while($addressSave[$i]->{PoBox} =~ s/[+]+/ /){}; while($addressSave[$i]->{Suite} =~ s/[+]+/ /){}; while($addressSave[$i]->{MiscData} =~ s/[+]+/ /){}; print IN "City = " . $addressSave[$i]->{City} . "\n"; print IN "State = " . $addressSave[$i]->{State} . "\n"; print IN "Zip = " . $addressSave[$i]->{Zip} . "\n"; print IN "Address = " . $addressSave[$i]->{Address} . "\n"; print IN "Po Box = " . $addressSave[$i]->{PoBox} . "\n"; print IN "Suite = " . $addressSave[$i]->{Suite} . "\n"; print IN "Misc data = " . $addressSave[$i]->{MiscData} . "\n\n"; $i++; } close(IN); ####Write invalid add $i = 0; my $filename2 = "invaildAddress"; $arrayLength = scalar(@addressSave); open(IN2 , '>', $filename2); print IN2 "Invalid Addresses:\n\n\n"; while($i < $addressL){ ##########BROKE? print IN2 "City = " . $invalidAdd[$i]->{City} . "\n"; print IN2 "State = " . $invalidAdd[$i]->{State} . "\n"; print IN2 "Zip = " . $invalidAdd[$i]->{Zip} . "\n"; print IN2 "Address = " . $invalidAdd[$i]->{Address} . "\n"; print IN2 "Po Box = " . $invalidAdd[$i]->{PoBox} . "\n"; print IN2 "Suite = " . $invalidAdd[$i]->{Suite} . "\n"; print IN2 "Misc data = " . $invalidAdd[$i]->{MiscData} . "\n\n"; $i++; } close(IN2); ####################################################SUBS####################################################SUBS sub form{ my ($addressSave, $invalidAdd) = @_; my $i = 0; my $arrayLength = scalar(@{$addressSave}); while($i < $arrayLength){ my $city = $addressSave->[$i]->{City}; my $state = $addressSave->[$i]->{State}; my $zip = $addressSave->[$i]->{Zip}; my $add = $addressSave->[$i]->{Address}; my $po = $addressSave->[$i]->{PoBox}; my $suite = $addressSave->[$i]->{Suite}; print "\n\n"; my $url = "http://www.melissadata.com/lookups/addressverify.asp"; my $agent = new LWP::UserAgent; my $newPost = new HTTP::Request('GET', $url); my $currentZipCode; $newPost->content_type('application/x-www-form-urlencoded'); my $post = "name=&Company=&Address=$add+$po&city=$city&state=$state&zip=$zip" . $currentZipCode; print "post = " . $post . "\n"; $newPost->content($post); my $response = $agent->request($newPost); if ($response->is_success) { print "response success\n"; } ##--Handle successful post data my $htmlResult = "Address NOT Verified";#($response->content); if($htmlResult =~ m/Address\sNOT\sVerified/i){ print "address invalid"; $addressSave->[$i] = $invalidAdd->[$i]; $addressSave->[$i] = (); print "\n"; } elsif($htmlResult =~ m/is\srequired\sto\sprocess\sthe\saddress/i){ print "address invalid\n"; $addressSave->[$i] = $invalidAdd->[$i]; $addressSave->[$i] = (); print "\n"; } else{ print "Address Valid\n"; } $i++; } } sub save{ my ($address, $addressSave) = @_; push(@{$addressSave}, $address); } #### Alabama Alabama Bureau of Tourism & Travel PO Box 4927 Montgomery, AL 36103 Alaska Alaska Division of Tourism PO Box 110801 Juneau, AK 99811-0801 Arizona Arizona Office of Tourism 1110 W. Washington Street, Suite 155 Phoenix, AZ 85007 Arkansas Arkansas Department of Parks and Tourism One Capitol Mall Little Rock, AR 72201 California California Division of Tourism PO Box 1499 Dept TIA Sacramento, CA 95812 Colorado Colorado Tourism Office 1625 Broadway Suite 2700 Denver, CO 80202 Connecticut Connecticut Commission on Culture & Tourism One Financial Plaza 755 Main Street Hartford, CT 06103 Delaware Delaware Tourism Office 99 Kings Highway PO Box 1401 Dover, DE 19903 Florida Florida Office of Tourism PO Box 1100 Tallahassee, FL 32302 Georgia Georgia Department of Economic Development 75 Fifth Street, N.W., Suite 1200 Atlanta, GA 30308 Hawaii Hawaii Department of Business, Economic Development and Tourism PO Box 2359 Honolulu, HI 96804