use strict; use warnings; use DateTime; use DateTime::Span; use Datetime::Format::ISO8601; my $iso8601 = DateTime::Format::ISO8601->new; while () { my ( $first, $last ) = split('\|'); chomp $last; my $dt_set = DateTime::Span->from_datetimes( start => $iso8601->parse_datetime($first), before => $iso8601->parse_datetime($last), ); if ( $dt_set->contains( DateTime->now() ) ) { print "Within date range\n"; } else { print "Not within date range\n"; } } __DATA__ 1998-02-14|1998-03-01 2006-04-10|2006-06-01