http://www.perlmonks.org?node_id=159714


in reply to Logfile Viewer in Perl Tk

Tk has a function built in called fileevent that is made for stuff like this.

Here's an example pretty much right out of "Learning Perl/Tk" from O'Reilly.
use Tk; my $mw = MainWindow->new(); my $text = $mw->Scrolled("Text", -width => 80, -height => 25)->pack(-expand => 1); $mw->fileevent(STDIN, 'readable', [\&insert_text]); MainLoop; sub insert_text { my $curline=<STDIN>; $text->insert('end', $curline); }
That seems to work very nicely with a tail command piping output to the script. The other option of course, would be to open tail as a filehandle, like:
open(FH,"tail -f -n 1 logifle") || die "Could not tail: $!";
Then use <FH> instead of <STDIN> in the above.

P.S.
My wife now hates you, I've often wondered how to do similar things it Tk, but never had a driving need. Now that I looked up an answer to your question, I might just start messing around with Tk again (I can see lots of possibilites!)

Replies are listed 'Best First'.
Re: Re: Logfile Viewer in Perl Tk
by hackdaddy (Hermit) on Apr 17, 2002 at 07:28 UTC
    Thanks, slycer. I found the example in "Learning Perl/Tk" that you referenced.

    The fileevent method will come in handy.

    By the way, this can be a nice tool using the HList widget because you can format list items with different styles.

    One of the things that comes to mind is showing errors in bright red or allowing different levels of debug logging to be shown. Or you could have an email if a certain string is found in a log file.

    P.S.
    My wife hates you now, too.

    Please add any ideas you might have about this tool. Thanks.