#!/usr/bin/perl -w
######################################################################
# caltrain.pl
######################################################################
# Perl Power! - Michael Schilli 1998
######################################################################

use LWP::UserAgent;
use URI::URL;
use HTML::FormatText;
use HTML::TreeBuilder;

$url  = 'http://www.transitinfo.org/cgi-bin/all_times';

foreach $time (time(), time() + 2*3600) {
    my($hour, $minute) = (localtime($time))[2,1];
    $am_pm = $hour >= 12 ? "pm" : "am";
    push(@times, sprintf("%d:%02d$am_pm", $hour, $minute));
}

@form = ('C'           => 'CT',           # form content
         'FromStation' => '22nd',
         'ToStation'   => 'Hillsd',
         'D'           => 'WD',
         'ALL'         => 'N',
         'TIME'        => $times[0],
         'ATIME'       => $times[1],
        );

$ua = LWP::UserAgent->new();                   # create user agent

                                               # build query string
while(($key, $value) = splice(@form, 0, 2)) {
    $value =~ s/[^\w-_]/sprintf "%%%02x", ord($&)/ge;
    $querystring .= "&" if $querystring;
    $querystring .= "$key=$value";
}
                                         # create request
$request = HTTP::Request->new('GET', "$url?$querystring");

$response = $ua->request($request);      # carry out network access

$tree = HTML::TreeBuilder->new()->parse($response->content());

$formatter = HTML::FormatText->new();       # formatter object

print $formatter->format($tree);            # output
