#! perl -w use strict; use Date::Calc qw(Delta_Days); my $outfile = 'new_logfile.txt'; my ($yr, $mo, $day) = qw/2006 1 1/; open OUT, ">", $outfile or die "Cannot open $outfile:$!\n"; while () { my ($line_year, $line_mon, $line_day) = /(\d{4})-(\d{1,2})-(\d{1,2})/; ## you need the date, unless you can rely on ordered dates. ## Your sample suggests they're unordered, so I'm going with that. ## if they're ordered, there are easier ways to do this my $delta_days = Delta_Days($line_year,$line_mon,$line_day,$yr,$mo,$day); print $delta_days; next if $delta_days > 0; print OUT $_; } close OUT; __DATA__ TICKETHELP###,########,1234567###,2004,X,Y,35.00###,2004-5-2 17:44:44,TICKETHELP###########1234567###2005XY356.00###,World Cup List,John Marck TICKETHELP###,########,1234567###,2005,X,Y,16.00###,2005-3-8 17:44:44,TICKETHELP###########1234567###2005XY356.00###,World Cup List,John Marck TICKETHELP###,########,1234567###,2006,X,Y,23.00###,2006-1-3 17:44:44,TICKETHELP###########1234567###2005XY356.00###,World Cup List,John Marck TICKETHELP###,########,0933456###,2005,X,Y,33.00###,2005-5-7 17:44:44,TICKETHELP###########1234567###2005XY356.00###,World Cup List,John Marck TICKETHELP###,########,1234567###,2005,X,Y,87.00###,2005-5-4 17:44:44,TICKETHELP###########1234567###2005XY356.00###,World Cup List,John Marck TICKETHELP###,########,1984567###,2005,X,Y,32.00###,2005-3-8 17:44:44,TICKETHELP###########1234567###2005XY356.00###,World Cup List,John Marck TICKETHELP###,########,1234567###,2005,X,Y,67.00###,2006-5-2 17:44:44,TICKETHELP###########1234567###2005XY356.00###,World Cup List,John Marck TICKETHELP###,########,1223698###,2000,X,Y,79.00###,2000-1-1 17:44:44,TICKETHELP###########1234567###2005XY356.00###,World Cup List,John Marck TICKETHELP###,########,1299n67###,2001,X,Y,26.00###,2001-5-5 17:44:44,TICKETHELP###########1234567###2005XY356.00###,World Cup List,John Marck