#!/usr/bin/perl use strict; use warnings; use File::Tail; my $cur_filename = $ARGV[0]; { my $file = File::Tail->new( name => $cur_filename, maxinterval => 3, adjustafter => 2, tail => -1, ); eval { local $SIG{INT} = sub { die "interrupted\n"; }; while ( defined( my $line = $file->read) ) { print $line; } }; if($@ eq "interrupted\n") { open(FILE,"/tmp/filename") || die "Cannot open file:$!"; $cur_filename=; close(FILE); redo; } else { die "$@"; } }