sub to_seconds { my $time_string = shift; my $secs; if ($time_string =~ m/(\d+):(\d+):(\d+)\s*(AM|PM)/i) { $secs = $1*3600 + $2*60 + $3 + (lc($4) eq 'pm' ? 12*3600 : 0); } else { warn "unable to parse this time: $time_string\n"; } return $secs; # returns undef if unable to parse string }