- - PR -
perlでファイルの状態監視
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-02-21 23:18
Perlであるテキストファイルの末尾にデータが追加されたら、その追加データを取得するプログラムを作成したいのですが、ファイルにデータを追加されたことを判断するのに何かいい関数や手段がありましたら教えてください。
| ||||
|
投稿日時: 2006-02-22 01:55
こんばんは。
ファイルのタイムスタンプで判断はどうでしょうか? @fd = stat('data.txt'); # statでファイル情報取得 $atime = localtime($fd[8]); # アクセス日 $mtime = localtime($fd[9]); # 更新時刻 それに付加して、サイズ比較もアリかと。 $size = $fd[7]; # サイズ $size の取得方法訂正 [ メッセージ編集済み 編集者: あるかな 編集日時 2006-02-22 02:59 ] | ||||
|
投稿日時: 2006-02-22 02:04
詳しくないのであれですが・・・ 只、今思い浮かんだ物に、「LogSerfer」とか「Swatch」というソフトがあります これは、任意のログファイルを監視して、該当文字列が記録されると設定したアクション を起こすというツールです 「Swatch」は確かperlで書かれていたと思います 参考に出来ますでしょうか・・・ http://www.atmarkit.co.jp/flinux/rensai/root04/root04b.html http://www.cert.dfn.de/eng/logsurf/ | ||||
|
投稿日時: 2006-02-22 21:44
ありがとうございます。
さっそく、「LogSerfer」とか「Swatch」というソフトを使って検証してみます。 またよろしくお願いします。 | ||||
|
投稿日時: 2006-02-23 02:32
私が思いついたのは、4引数の select() 関数と
File::Tail モジュールですね。 select() 関数は、UNIX系OS以外では動かなかったりする場合もあるようですし、 移植性を考えると、いまいちかも知れません。 File::Tail モジュールは使った事が無いのでよく分かりませんが、 swatch 等の有名ソフトでも使用されていますし、 日本語マニュアルもありますね。 |
1