my $file=File::Tail->new(name=>$name, name_changes=>&change, interval=>1, maxinterval=>5, adjustafter=>7); while (defined($line=$file->read)){ .. } sub change{ my $date = sprintf("%04d%02d%02d", (localtime(time))[5] + 1900,(localtime(time))[4]+1, (localtime(time))[3]); return $date; }