2010-12-20 4 views
2

私は、File::Tailモジュールを使ってログファイルを監視するための単純なPerlスクリプトで作業していますが、モジュールが正常に動作しないようです。なぜこのPerlスクリプトはFile :: Tailモジュールを使用していないのですか?

アイデアはIRCで使用することですが、これはうまくいきませんでしたので、インタラクティブなインタプリタを使って問題を絞り込んだ後、File :: Tailに絞り込みました。私は、ファイルを監視するには、次の基本的な例を、それを削減してきましたし、新しいエントリをファイルに追加されたときに何も全く起きない:

#!/usr/bin/perl -w 

use strict; 

use File::Tail; 

my $file = File::Tail->new("/var/log/apache2/error.log"); 

while(defined(my $line = $file->read)) 
{ 
    print "$line\n"; 
} 

誰もが問題が何であるかを提案することはできますか?私はperldocのエントリを通過して、これはそこから実質的にコピーされているので、私は実際に何か目障りなエラーが発生していることはわかりません。私はUbuntu Lucidを実行しています。

+0

問題は解決しました。私はちょうどそれを実行するために残して、それは約1分後に印刷されます。私はそれを実行したときにちょっとあまりにもせっかちだったように見える - まだ、教訓を学んだ! –

+0

FYI @ mattbd-自分の質問は削除しないでください。十分な人が質問を移動するのに投票すると、移動します。それがこれらのサイトの仕組みです。 – mfinni

答えて

2

これは権限エラーである可能性がありますか?スクリプトを実行しているユーザーは、/var/log/apache2/error.logとしてアクセスできますか?

+0

はい - 問題を起こさずにログを表示するには、lessを使用できます。 –

0

他のすべてが失敗した場合は、自分で実装してください。私は単にあなたherehereをリンクされていた場合、私は入力する必要がありませんでし

use Fcntl qw(:seek); 

while (1) { 
    while (<$fh>) { 
     ... 
    } 
    sleep(1); 
    seek $fh, 0, SEEK_CUR; 
} 

...。

0

私はちょうど私が完全なツールとなってきたことに気付きました...

それは完璧に動作 - 私はCtrlキーを押しながらCを押す前に、十分な長さ、それはありません。 D'oh!ああ、レッスンは学んだ!とにかく助けてくれてありがとう!

+0

答えとして非回答を投稿しないでください。 –

関連する問題