NAME
    Weather::Google - Perl interface to Google's Weather API

SYNOPSIS
     use Weather::Google;
     my $gw;

     ## Initialize the module
     $gw = new Weather::Google(90210); # Zip code
     $gw = new Weather::Google('Beverly Hills, CA'); # City name

     # Or
     $gw = new Weather::Google;
     $gw->zip(90210); # Zip code
     $gw->city('Beverly Hills, CA'); # City name

     ## Get some current information

     my @info;
     @info = $gw->current('temp_f','temp_c','humidity','wind_condition');

     # Or
     my $current = $gw->current;
     @info = ($current->{temp_f}, $current->{temp_c}, $current->{humidity});

     # Or
     @info = ($gw->temp_f, $gw->temp_c, $gw->humidity, $gw->wind_condition);

     ## Forecast
 
     print "Today's high: ", $gw->forecast(0,'high');
     print "Today's high: ", $gw->forecast('Today','high');
     print "Today's high: ", $gw->today('high');

     # Assuming Today is Monday:
     print "Tomorrow's high: ", $gw->forecast(1,'high');
     print "Tomorrow's high: ", $gw->forecast('Tue','high');
     print "Tomorrow's high: ", $gw->tue('high');
 
     ## Forecast information:
     print "Forecast for ". $gw->info('city'). "made at ".
            $gw->info('current_date_time');

DESCRIPTION
    Weather::Google provides an interface to Google's Weather API.

METHODS
    new Initializes the Weather::Google object. Optionally takes a
        Zip/postal code or city name as an argument.

    zip Sets the zip/postal code for the Weather::Google object. Takes a 5
        digit integer as an argument. Returns 1 if successful.

    city
        Sets the city for the Weather::Google object. Takes a string as an
        argument. Returns 1 if successful.

    current_conditions
        Method to report on current weather conditions. With no argument,
        this returns a hash reference containing weather information.
        Optionally takes an array of conditions to fetch.

        Returns a scalar containing the requested information if only one
        argument is passed, or an array of information if multiple arguments
        are passed. The information will be in the same order as requested;
        nonexistant information is returned as undef.

         # Example 1:
         my $info = $gw->current_conditions;
         foreach my $condition ( keys ( %$info ) ) {
                print "$condition: ", $info->{$condition}, "\n";
         }

         # Example 2:
         my @info = $gw->current_conditions('temp_f','temp_c');
         print "Temperature in F and C: @info";

         # Example 3:
         my $temp_f = $gw->current_conditions('temp_f');
         my $temp_c = $gw->current_conditions('temp_c');
         print "It is $temp_f F ($temp_c C) degrees\n";

        ARGUMENTS
            The current_conditions() method will take any string as an
            argument, but will print warnings and return undefs if the
            information is not available. It is generally safe to use the
            following strings as arguments:

             icon
             temp_f
             temp_c
             wind_condition
             humidity
             condition

        See also the ALIASES section for easier methods to access
        current_conditions().

    forecast_conditions
        Method to report on weather conditions over the next few days. With
        no argument, this returns an array reference containing a hash
        reference containing weather information for each day available.
        Optionally takes a day of the week (as a string containing the first
        three letters of the day) or an array index number (where 0 is
        today, 1 is tomorrow, etc.) as the first argument, and an array of
        conditions to fetch as subsequent arguments..

        If a day is given, but no conditions are passed, this method will
        return a hash reference containing conditions for that day.

        If conditions are passed, this method returns a scalar containing
        the requested information if only one condition is requested, or an
        array of information if multiple conditions are requested. The
        information will be in the same order as requested; nonexistant
        information is returned as undef.

         # Example 1:
         my $days = $gw->forecast_conditions;
         foreach my $day (@$days) {
                # See Example 2
         }

         # Example 2:
         my $today = $gw->forecast_conditions(0);
         print "High: ".$today->{high}."\n";
 
         # Example 3:
         my $tom_high = $gw->forecast_conditions(1,'high');
         my $tue_low = $gw->forecast_conditions('Tue','low);
         print "Tomorrow's high is $tom_high and Tuesday's low is $tue_low\n";

        ARGUMENTS
            The forecast_conditions() method will take any string as an
            argument, but will print warnings and return undefs if the
            information is not available.It is generally safe to use the
            following strings as arguments:

             icon
             high
             low
             day_of_week
             condition

        See also the ALIASES section for easier methods to access
        forecast_conditions().

    forecast_information
        Method to report various information about the forecast itself. With
        no argument, this returns a hash reference containing various
        information. Optionally takes an array of conditions to fetch.

        Returns a scalar containing the requested information if only one
        argument is passed, or an array of information if multiple arguments
        are passed. The information will be in the same order as requested;
        nonexistant information is returned as undef.

         # Example 1:
         my $info = $gw->forecast_information;
         print "Zip: ".$info->{postal_code}."\n";

         # Example 2:
         my $city = $gw->forecast_information('city');
         print "Forecast for $city:\n";

         # Example 3:
         my @info = $gw->forecast_information('city','postal_code');

        ARGUMENTS
            The forecast_informatio() method will take any string as an
            argument, but will print warnings and return undefs if the
            information is not available. It is generally safe to use the
            following strings as arguments:

             forecast_date
             current_date_time
             city
             postal_code
             unit_system
             latitude_e6
             longitude_e6

            Using latitude_e6 or longitude_e6 may return undef or strange
            values, since Google doesn't normally set them.

        See also the ALIASES section for easier methods to access
        forecast_information().

    err This method returns the most recent error.

ALIASES
    Using the methods defined in METHODS in a script can get annoying very
    quickly. Luckily, Weather::Google provides methods that can be used as
    aliases for the defined methods.

  SIMPLE ALIASES
    The methods current(), forecast(), and info() can be used in place of
    current_conditions(), forecast_conditions(), and forecast_information()
    respectively.

  DAY OF WEEK
    The methods today(), tomorrow(), mon(), tue(), wed(), thu(), fri(),
    sat(), and sun() can be used as alias to forecast_conditions($day),
    where $day is the name of the method.

    You can also use the full name (i.e., monday() or tuesday()) as opposed
    to the first three letters.

  CURRENT CONDITION
    Any other method is used as an alias to current_conditions($method)
    where $method is the name of the method. This means, for example, you
    can use temp_f() as an implied alias for current_conditions('temp_f'),
    and so on.

AUTHOR
    Dan "Possum" LeWarne possum+perl@possumism.net

VERSION
    0.01

COPYRIGHT
    Copyright (C) 2008 Dan "Possum" LeWarne. All Rights Reserved.

    This program is free software, you can redistribute it and/or modify it
    under the same terms as Perl itself.

SEE ALSO
    This (very briefly) discusses the Weather API

    <http://toolbar.google.com/buttons/apis/howto_guide.html>

