#!/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' 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 }