#!/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 = ""; #read in my $filename = ('addresses.txt'); my $txtContent = ""; open(IN, '<', $filename); while(my $line = ){ $txtContent .= $line; } close(IN); #split my @address = split(m/[\r]+/, $txtContent); my $addressL = scalar(@address); print $addressL . "\n"; #Save Address Elements to scalars while($i < $addressL){ $address = @address[$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*\S*\d+[\d\s\w.,#]+)/){ my $addressNum = $1; $printADD = $addressNum; } elsif($address =~ /([\w\s]+)/i){ $data = $1; $data1 .= $data; } if($address =~ /(suite\s\d+)/i){ $suite = $1; $printSuite = $suite; } if(($printADD =~ /\d+/) && ($printSuite =~ /suite\s\d+/i)){ $printADD = ""; } #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]+/+/){}; print $printPO; print "\n"; print $printADD; print $printSuite; print "\n"; print $city1; print "\n"; print $state1; print "\n"; print $zip1; print "\n"; my %address =( 'City' => "$city1", 'State' => "$state1", 'Zip' => "$zip1", 'Address' => "$printADD", 'PoBox' => "$printPO", 'Suite' => "$printSuite"); 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); #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/[+]+/ /){}; print IN $addressSave[$i]->{City} . "\n"; ## BROKEN? print IN $addressSave[$i]->{State} . "\n"; print IN $addressSave[$i]->{Zip} . "\n"; print IN $addressSave[$i]->{Address} . "\n"; print IN $addressSave[$i]->{PoBox} . "\n"; print IN $addressSave[$i]->{Suite} . "\n"; $i++; } close(IN); ####################################################SUBS####################################################SUBS sub form{ my ($addressSave) = @_; my $i = 0; my $arrayLength = scalar(@{$addressSave}); while($i < $arrayLength){ my $city = $addressSave->[$i]->{City}; #Broken here? 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}; Dumper(\@{$addressSave}->[$i]); 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; ## BROKEN? 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 = ($response->content); if($htmlResult =~ m/
Address NOT Verified/){ print 'Error on :' . $addressSave[$i]; delete($addressSave[$i]); print "\n"; } else{ print "Address Valid\n"; } $i++; } } sub save{ my ($address, $addressSave) = @_; push(@{$addressSave}, %{$address}); }