#!/usr/bin/perl -w # yahoowetter: parses weather information from the Yahoo! Wetter service use strict; use LWP::Simple; use HTML::TableExtract; print "Yahoo! Wetter - Parserskript 0.1 (Stand 3. Jun 2002)\n"; my $URL; if(@ARGV) { $URL = shift @ARGV; } else { open URL, "<", "$ENV{HOME}/.yahoowetter" or die "~/.yahoowetter angelegen oder URL auf der Kommandozeile übergeben\n"; $URL = ; close URL; } sub prettify { s/\s+/ /sg, s/^\s+//, s/:?$// for $_[0]; $_[0] } (my $extractor = new HTML::TableExtract)->parse(get($URL) or die "Keine Daten geladen (sind wir online?)\n"); my @valuenames = qw(Temperatur Zeitpunkt); my @weather; push @weather, (map [ shift(@valuenames), prettify($_->[0]) ], $extractor->table_state(4,0)->rows()); push @weather, (map [ split(/\W/, prettify($_->[2]), 2) ], $extractor->table_state(3,1)->rows()); push @weather, (map [ map prettify($_), @$_ ], $extractor->table_state(3,2)->rows()); @weather[0,1] = @weather[1,0]; $_->[0] =~ s/$/:/ for @weather; printf "%-20s %s\n", @$_ for @weather; print "\n";