Perl checks for rain and issues umbrella warning
Rain Check
A Perl script that retrieves the current weather forecast at dawn helps the Perlmeister decide whether to run the risk or take an umbrella just in case.
In the wet season, the question often arises as to whether rain or snow will fall from the sky during the day and therefore whether it might be advisable to take an umbrella with me to work.
Underground Weather
Ultimately, however, even occasional rain showers around noon would be irrelevant, as long as you could navigate the commute to and from work without getting wet. Luckily, the Weather Underground [1] weather service offers free forecasts for the day. Although they are certainly not 100 percent accurate, they do beat human intuition by a mile.
On CPAN, Perl programmers will find the WWW::Wunderground::API module, which uses a script to fetch the weather data from the server thanks to a free API developer key [2] procured especially for that purpose. The simple script in Listing 1 uses the module; it iterates over the hourly entries in the bulk of JSON data returned and outputs the time and the probability of rain for each hour sent in the pop
(probability of precipitation) [3] entry.
Figure 1 shows less than a 50 percent probability of rain in the afternoon; a practicing mathematician might be inclined to leave that umbrella at home.
More Than Just Rain
That said, the Underground server returns far more than just the probability of rain. The hourly()
method called in line 12 of Listing 1 returns an array of hourly weather elements for the day. As the mass of data in Figure 2 shows, each element points to a number of keys such as humidity
or sky
(cloud coverage). Finally, the date and time of the forecast are provided under FCTTIME
.
Listing 1
chance-of-rain.pl
01 #!/usr/local/bin/perl -w 02 use strict; 03 use WWW::Wunderground::API; 04 use DateTime; 05 06 my $w = WWW::Wunderground::API->new( 07 location => "San Francisco, CA", 08 api_key => "0123456789abcdef", 09 auto_api => 1, 10 ); 11 12 for my $e (@{ $w->hourly }) { 13 my $dt = DateTime->from_epoch( 14 epoch => $e->{ FCTTIME }->{ epoch } ); 15 16 print "$dt: $e->{ pop }%\n"; 17 }
Listing 1 grabs the epoch
entry from the date and converts the Unix seconds since 1970, using the DateTime
Perl module, to a readable and easily machine manipulable format for use later.
API Key for an Email Address
The Wunderground server does not give you the data unconditionally, but if you register on the developer page by providing a valid email address [2], you will receive a 16-digit hexadecimal API key in return that enables a limited number of daily queries to the service. If you select the free "Cumulus" plan and also assure the provider that the data will not be used for commercial purposes (Figure 3), you do not need to specify any form of payment. In Listings 1 and 2, you need to replace the string defined by api_key
with the API key you are assigned (Figure 4) before use.
Buy this article as PDF
(incl. VAT)
Buy Linux Magazine
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Support Our Work
Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.
News
-
Linux Kernel 6.13 Offers Improvements for AMD/Apple Users
The latest Linux kernel is now available, and it includes plenty of improvements, especially for those who use AMD or Apple-based systems.
-
Gnome 48 Debuts New Audio Player
To date, the audio player found within the Gnome desktop has been meh at best, but with the upcoming release that all changes.
-
Plasma 6.3 Ready for Public Beta Testing
Plasma 6.3 will ship with KDE Gear 24.12.1 and KDE Frameworks 6.10, along with some new and exciting features.
-
Budgie 10.10 Scheduled for Q1 2025 with a Surprising Desktop Update
If Budgie is your desktop environment of choice, 2025 is going to be a great year for you.
-
Firefox 134 Offers Improvements for Linux Version
Fans of Linux and Firefox rejoice, as there's a new version available that includes some handy updates.
-
Serpent OS Arrives with a New Alpha Release
After months of silence, Ikey Doherty has released a new alpha for his Serpent OS.
-
HashiCorp Cofounder Unveils Ghostty, a Linux Terminal App
Ghostty is a new Linux terminal app that's fast, feature-rich, and offers a platform-native GUI while remaining cross-platform.
-
Fedora Asahi Remix 41 Available for Apple Silicon
If you have an Apple Silicon Mac and you're hoping to install Fedora, you're in luck because the latest release supports the M1 and M2 chips.
-
Systemd Fixes Bug While Facing New Challenger in GNU Shepherd
The systemd developers have fixed a really nasty bug amid the release of the new GNU Shepherd init system.
-
AlmaLinux 10.0 Beta Released
The AlmaLinux OS Foundation has announced the availability of AlmaLinux 10.0 Beta ("Purple Lion") for all supported devices with significant changes.