use Time::Local qw( timelocal ); sub get_time_from_local_time_string { my ($time_string) = @_; my ($M, $D, $Y, $h, $m, $s, $ampm) = $time_string =~ m{(\d+)/(\d+)/(\d+) (\d+):(\d+):(\d+) (\w+)}; if ($h == 12) { $h -= 12 if lc($ampm) eq 'am'; } else { $h += 12 if lc($ampm) eq 'pm'; } return timelocal($s, $m, $h, $D, $M-1, $Y); } my $time1 = get_time_from_local_time_string($time_string_1); my $time2 = get_time_from_local_time_string($time_string_2); if (abs($time1 - $time2) > 72*60*60) { ... }