use strict; use warnings; my ($sdate, $edate, $rdate); $sdate = sprintf('%04d%02d%02d', 2006, 11, 4); $edate = sprintf('%04d%02d%02d', 2006, 12, 4); while () { ($rdate) = m/(\d+)/; print if $sdate <= $rdate && $rdate <= $edate; } __DATA__ 20061203 Record 1 20061204 Record 2 20061206 Record 3