daemonチックなプログラムの時に便利。swatchもこれを使ってる。
use File::Tail; my $file = File::Tail->new( name => "/var/log/httpd/access_log", interval => 1, maxinterval => 5, ); while (my $line=$file->read) { print "$line"; }
ログにしばらく変化がなかったら、File::Tailが開きなおしてくれる。
普通にファイルを開いてwhile (my $line = <$fh>)とすると、ログの終端に来たらループ抜けてしまうけど、File::Tailを使うとループが終わらずにファイルを監視し続ける。