in reply to Assigning a varable inside of (?{})
But where the undef was coming from was a blank line in <DATA> ... so the match failed, so $sunrise/$sunset where undef. Just a quick check for a valid string/success on the match resolves it.use strict; use warnings; while (<DATA>) { next unless /\S/; my ( $sunrise, $sunset ) = get_time($_); next unless $sunrise && $sunset; printf "Sunrise is: %s Sunset is: %s\n", $sunrise, $sunset; } sub get_time { my $string = shift; return unless $string =~ /sunrise:\s+(\d+:\d+)\s+sunset:\s+(\d+:\d+) +/; return ( $1, $2 ); } __DATA__ Aberdeen, Scotland 57 9 N 2 9 W sunrise: 03:12 sunset: 21:08 Adelaide, Australia 34 55 S 138 36 E sunrise: 06:52 sunset: 16:41
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Assigning a varable inside of (?{})
by davido (Cardinal) on May 03, 2006 at 16:18 UTC | |
|
Re^2: Assigning a varable inside of (?{})
by monsterzero (Monk) on May 03, 2006 at 16:32 UTC |