Wow, thank you for your assistance. I was working on the assumption that I got
something correct in an earlier script, that was incorrect. I've got some more
work to do but your explanation helped me understand where I went wrong.
On Feb 24, 2010, at 12:38 PM, John W. Krahn wrote:
> Erik Lewis wrote:
>> Hi,
>
> Hello,
>
>> I'm writing a perl script thats goal is to read a delimited file
>> containing a userid and an address to google maps where the address is
>> converted into latitude and longitude. The problem I'm having is with
>> the result I'm printing. Each line is unique via the userid when its
>> printed but I'm getting the same latitude and longitude for each
>> address. I think the problem is I need to wait x amount of seconds
>> before i send each url to google, but I'm not really sure how to
>> accomplish that. To be truthful I'm not even sure that is the problem.
>> I've attached my script, input file, and result. Note its personal
>> data so I've had to anonymize the input file and the results.
>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>> #!/usr/bin/perl
>> use warnings; use strict; use LWP::Simple;
>> open (ADDRESSOUT, 'addressout.txt');
>
> You should *always* verify that the file opened correctly:
>
> open ADDRESSOUT, '<', 'addressout.txt' or die "Cannot open 'addressout.txt'
> $!";
>
>
>> while (<ADDRESSOUT>) { #the start of the loop
>> chomp; #dropping line characters
>> my @addressfield = split(/\:\:\:/, $_); my $geoaddress =
>> $addressfield[1] =~ s/ /\+/;
>
> You are assigning the return value of the substitution which is always either
> TRUE or FALSE (the =~ operator has higher precedence than the = operator.)
> You need to do the assignment first before the substitution. You are only
> substituting the first space character, not all of them.
>
> ( my $geoaddress = $addressfield[ 1 ] ) =~ s/ /+/g;
>
>
>> my $googlekey = "unique google map api key";
>> my $geocode_csv =
>> get("http://maps.google.com/maps/geo?q=$geoaddress&output=csv&sensor=false&key=$googlekey")
>> or die 'Unable to get page';
>> my @geoarray = split(/,/, $geocode_csv);
>> print "$addressfield[0],$geoarray[2],$geoarray[3]\n";
>> } #end of the loop
>> close (ADDRESSOUT); #closing the file
>> exit 0;
>> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>> addressout.txt
>> 32986000382444:::34 main street anytown, tn 39455
>> 31686000146174:::76 second avenue anytown, tn 39455
>> 31685000781354:::1 park lane anytown, tn 39455
>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>> result
>> 32986000382444 ,49.3961500,32.7630300
>> 31686000146174 ,49.3961500,32.7630300
>> 31685000781354 ,49.3961500,32.7630300
>> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
>
>
> John
> --
> The programmer is fighting against the two most
> destructive forces in the universe: entropy and
> human stupidity. -- Damian Conway
>
> --
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> http://learn.perl.org/
>
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/