うまいぼうぶろぐ

linuxとhttpdとperlのメモ

File::Tail - 定期的にログを監視する

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を使うとループが終わらずにファイルを監視し続ける。