- PR -

perlでファイルの状態監視

1
投稿者投稿内容
アントニオ
会議室デビュー日: 2006/01/10
投稿数: 18
投稿日時: 2006-02-21 23:18
Perlであるテキストファイルの末尾にデータが追加されたら、その追加データを取得するプログラムを作成したいのですが、ファイルにデータを追加されたことを判断するのに何かいい関数や手段がありましたら教えてください。
あるかな
大ベテラン
会議室デビュー日: 2003/11/04
投稿数: 245
投稿日時: 2006-02-22 01:55
こんばんは。

引用:

アントニオさんの書き込み (2006-02-21 23:18) より:
Perlであるテキストファイルの末尾にデータが追加されたら、その追加データを取得するプログラムを作成したいのですが、ファイルにデータを追加されたことを判断するのに何かいい関数や手段がありましたら教えてください。



ファイルのタイムスタンプで判断はどうでしょうか?

@fd = stat('data.txt'); # statでファイル情報取得
$atime = localtime($fd[8]); # アクセス日
$mtime = localtime($fd[9]); # 更新時刻

それに付加して、サイズ比較もアリかと。

$size = $fd[7]; # サイズ


$size の取得方法訂正

[ メッセージ編集済み 編集者: あるかな 編集日時 2006-02-22 02:59 ]
あのことこのこ
会議室デビュー日: 2003/06/08
投稿数: 10
投稿日時: 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/01/10
投稿数: 18
投稿日時: 2006-02-22 21:44
ありがとうございます。
さっそく、「LogSerfer」とか「Swatch」というソフトを使って検証してみます。
またよろしくお願いします。
cn009
ベテラン
会議室デビュー日: 2004/05/13
投稿数: 72
投稿日時: 2006-02-23 02:32
私が思いついたのは、4引数の select() 関数と
File::Tail モジュールですね。

select() 関数は、UNIX系OS以外では動かなかったりする場合もあるようですし、
移植性を考えると、いまいちかも知れません。

File::Tail モジュールは使った事が無いのでよく分かりませんが、
swatch 等の有名ソフトでも使用されていますし、
日本語マニュアルもありますね。

1

スキルアップ/キャリアアップ(JOB@IT)