http://www.perlmonks.org?node_id=154954
Description: I bought an account with www.wunderground.com so I don't feel guilty making requests through an agent... my $weather = weather (95017); print "$weather\n";

sub weather
  {
  my $zip = shift;
  my $url = shift;

  $url = $url || "http://www.wunderground.com/cgi-bin/findweather/getF
+orecast?query=$zip";

  my $out = &www_slurp ($url);

  $out =~ s/\r//g;
  $out =~ s/\n//g;

  my ($temp) = $out =~ /<td>Temperature<\/td><td><b>(\d+)/m;
  my ($cond) = $out =~ /<td>Conditions<\/td><td><b>([^<]+)</m;
  my ($sunrise, $t) = $out =~ /<td>Sunrise<\/td><td><b> (\d+:\d+) (AM|
+PM)/m;
  my ($sunset, $tt) = $out =~ /<td>Sunset<\/td><td><b> (\d+:\d+) (AM|P
+M)/m;
  my ($location) = $out =~ /<title>Weather Underground: ([^<]+)</m;
  $location =~ s/ Forecast$//;
  my ($gay, $tonight) = $out =~ /<b>(Monday|Tuesday|Wednesday|Thursday
+|Friday|Saturday|Sunday|Today|Tonight|Overnight|Now)<\/b><br>([^<]+)<
+/;

  $tonight =~ s/&&//g;
  $tonight =~ s/\s+$//;

  return "" if (! $temp);

  my $now = time;
  my @now = split //, $now;

  my $str = "$location: $cond, $temp" .
    "F, $tonight" .
    ($sunrise && $t ? " sunrise at $sunrise $t" : "") .
    ($sunset && $tt ? ", sunset at $sunset $tt." : "");

  $str =~ s/\s+/ /g;
  return $str;
  }
Replies are listed 'Best First'.
•Re: Fetch weather by zip code
by merlyn (Sage) on Mar 28, 2002 at 14:49 UTC
    A reply falls below the community's threshold of quality. You may see it by logging in.
Re: Fetch weather by zip code
by particle (Vicar) on Mar 28, 2002 at 14:01 UTC
    &www_slurp is where?

    and $gay (perhaps you mean $day) is only used once. use undef if it's not used.

    perhaps testing $temp's existence would be better directly after it's assignment. it would save unneccessary cycles.

    ~Particle ;̃