Using this code you can simply type:
multimap 'boston, ma' 'buffalo, ny' 'Kansas City, mo' 'Denver, co'
and it will save the individual results from maps.yahoo.com to the current directory as trip_leg_N.html, where N goes from 1 to (the number of addresses you gave) - 1.
This currently just works for addresses and cities, not airport codes.
#!/usr/bin/perl use warnings; use strict; use Data::Dumper; use LWP::Simple; { my @addrs = @ARGV; if ( scalar @addrs < 2 ) { print "You have " . scalar @addrs . " addresses. " . "Need 2 or more. Enter 'done<return>' to finish\n"; while ( <> ) { last if $_ eq "done\n"; push @addrs, $_; } die help () if scalar @addrs < 2; chomp @addrs; } @addrs = process_addresses ( @addrs ); foreach ( 0 .. scalar @addrs - 2 ) { my $url = make_url ( [ $addrs[$_], $addrs[$_+1] ] ); getstore ( $url, "trip_leg_" . ($_ + 1) . ".html" ); } } sub process_addresses { my @addrs = @_; foreach ( @addrs ) { my $count = $_ =~ tr/,/,/; $_ = [ split ( /\s*,\s*/, $_, $count ) ]; unshift @$_, "" if 1 == $count; $_ =~ s/\s+/%2C/g foreach @$_; } return @addrs; } sub make_url { my ( $addr_pair ) = @_; my $url = "http://maps.yahoo.com/dd_result?country=us&tcountry=us" + . join ( '&', "addr=" . $addr_pair->[0][0], "csz=" . $addr_pair->[0][1], "taddr=" . $addr_pair->[1][0], "tcsz=" . $addr_pair->[1][1] ); return $url; } sub help { print << " EOF"; usage: multimap "31 Kinnaird St, Cambridge, MA" \ "27 Hall St, Somerville, MA" \ "60 Garden St, Cambridge, MA" EOF }
In reply to Multi-stop Trip Yahoo Maps Tool by kesterkester
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |