Hatena::Groupperl

Perl Tech RSSフィード

2009-09-12

Dropboxみたいにファイルを監視したい はてなブックマーク -  Dropboxみたいにファイルを監視したい - Perl Tech

フォルダを監視し、ファイル作成・変更・削除などのイベントを捕捉できるPerlモジュールは有るのだろうか。ということでCPANで探したところ、以下の3種類のモジュールを発見した。

File::Monitor

3つの中で最も完成度が高そうなモジュール。ドキュメントを読むと、Dropboxのようなプログラムも実装可能と書かれている。

  • ファイルのstat関数の値を監視する
  • ファイルが新規作成されたら通知する
  • 監視中のファイルが削除されたら通知する
  • ディレクトリ内にファイルが追加、または削除されたら通知する

イベントの通知はコールバック関数で受け取る。サブディレクトリを含めた監視が可能。

File::ChangeNotify

ファイルの作成・変更・削除の監視が可能。イベント通知はイベントループで受け取るタイプ。どうやらサブディレクトリの監視が出来ないようで、やや機能不足感がある。

Win32::FileSystem::Watcher

Win32APIを使用したモジュール。File::Monitorと同等のイベントを捕捉でき、サブディレクトリの監視も可能。ファイル名の変更が検出できたり、監視を非同期に実行できるのがポイント。ドキュメントが無いので、ソースを読んで理解する必要がある。