#!/usr/bin/perl use strict; use warnings; use Fcntl qw/:seek/; my $file='my.log'; # position to end open(FILE,$file) || die "$file: $!"; seek(FILE,0,SEEK_END) || die "Seek: $!"; my $pos=tell(FILE); close FILE; while(1) { sleep(5*60); # every 5 minutes open(FILE,$file) || die "$file: $!"; seek(FILE,$pos,SEEK_SET) || die "Seek: $!"; while () { # do something with $_ lines } $pos=tell(FILE); # update close FILE; }