use DateTime qw( ); my @months = qw( ... ); my $month_lkup = map { $months[$_] => $_+1 } 0..$#months; my $ref_dt = DateTime->today()-subtract( days => 2 ); while (<>) { my ($date) = /^(?:\S+\s+){3}\[([^\]]*)\]/ or next; my ($d,$m,$y,$H,$M,$S) = $date =~ /\w+/g; $m = $month_lkup{$m}; my $dt = DateTime->new( year => $y, month => $m, day => $d, hour => $H, minute => $M, second => $S, time_zone => 'UTC', ); $dt->set_time_zone('local'); $dt->truncate( to => 'day' ); print if $dt == $ref_dt; }