Sorry about being tricky with what was an older thread. But I suspect that thread died... and no one noticed there was an unaswered question still there.
Shawn C originally suggested I use File::Tail. There was a short exchange about why and then I began trying to use File::Tail but haven't been successful with it. The details are below: > Shawn H Corey <shawnhco...@gmail.com> writes: > >>> open(FILE,"<./named-pipe") or die "Can't Open ./named-pipe: $!"; >>> while(<FILE>){ >>> print; >>> if(eof){ >>> sleep 2; >>> seek (FILE,0,1); >>> } >>> } >>> >>> It seems at least to survive repeated restarts of system logger. >>> >>> If I write my script based on this code... what I'd be adding would be >>> code to get 1 or 2 rgx from the cmdline, then write the hits to >>> various files. > > [...] > >> In the general case, modules usually take care of special cases that you >> may not be aware of. That makes them the preferred method of solving a >> problem. >> >> In this case, the above code is a kludge. You can tell this because the >> program sleeps, rather than waiting on input. When a program does >> something to emulate what it really should be doing, it introduces code >> that may not work in all cases. I'm having trouble with File::Tail... or more likely the way I'm trying to use it is wrongly setup. But first about that sleep comment. As I read a little of File::Tail and its very likely I'm not really understanding what I'm reading but, it appears to be saying that it `sleeps' at times... the times are a little more sophisticated... but none the less sleep. Now the problem. I've taken the first examples in the perldoc File::Tail output: (http://search.cpan.org/~mgrabnar/File-Tail-0.99.3/Tail.pm) use File::Tail; $file=File::Tail->new("/some/log/file"); while (defined($line=$file->read)) { print "$line"; } And tied to make it work for my case (/var/adm/slpipe in the script is a named-pipe that the system logger reads into): cat fltr_sl #!/usr/local/bin/perl use strict; use warnings; use File::Tail; my ($file,$line); my $fname_in = "/var/adm/slpipe"; $file=File::Tail->new("$fname_in"); while (defined($line=$file->read)) { print "$line"; } When I run it, it doesn't show any errors, and appears to be waiting on the pipe. But no data ever comes out. I used the same test sequence as for the earlier script that didn't use File::Tail (posted earlier in this thread). The sequence is. 1) start the script `fltr_sl' shown above 2) To make sure if data is flowing thru the pipe start start (in a different xterm) tail -f slpipe too. 2) kill -HUP the system logger. 3) Ensure some data is flowing thru the named-pipe by running ssh r...@localhost from a user account I see 7-8 lines output to the tail -f slpipe command, but nothing to the perl script fltr_sl. And as I write this message, quite a few more lines are appearing at the `tail -f slpipe' cmd, but still nothing at my perl filter. Have I made some serious mistake in my attempted usage of File::Tail? -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/