I think you may be making an incorrect assumption that File::Tail returns a file handle. I can't find anything in the documentation which supports that.
?I suggest you step through in debug to find which line your error message is coming from, however there is a problem with the first
printf in your on_logentry subroutine - use double quotes instead of single (or none at all).
Using
printf is not necessary here,
print would do.