sub watch { my $tail = File::Tail->new( name=>"$filepath", interval=>1, maxinterval=>2, resetafter=>17 ); my @handles= ($tail, \*STDIN); while (1) { my (undef, undef, @pending) = File::Tail::select(undef, undef, undef, .5, @handles); foreach (@pending) { if ($_ == $tail) { my $line = $_->read(); } else { # assume STDIN } } } }