use strict; use warnings FATAL => 'all'; my $location = shift @ARGV || die 'No location specified'; my $api_key = shift @ARGV; warn "No API key specified, trying anyway...\n" unless $api_key; use POE; use POEx::Weather::OpenWeatherMap; POE::Session->create( heap => POEx::Weather::OpenWeatherMap->new( event_prefix => '', ( $api_key ? (api_key => $api_key) : () ), ), inline_states => +{ _start => sub { $_[HEAP]->start; $_[HEAP]->get_weather( location => $location ); }, weather => sub { my $weather = $_[ARG0]; my $place = $weather->name; my $tempf = $weather->temp_f; my $wind = $weather->wind_speed_mph; my $direc = $weather->wind_direction; print "$place -> ${tempf}F, wind ${wind}mph $direc\n"; $_[HEAP]->stop; }, }, ); POE::Kernel->run