use DateTime; use strict; use warnings; my $oneweekago = DateTime->now()->subtract(days => 7)->strftime("%Y%m%d"); while () { print if /(\d{8})/ && $1 > $oneweekago; } =prints abcd3.20110509-2345 =cut __DATA__ abcd1.20110429-2345 abcd2.20110502-2345 abcd3.20110505-2345 abcd3.20110509-2345