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 sequence as for the earlier script the didn't use File::Tail (posted earlier in this thread). That is. 1) start the script `fltr_sl' shown above 2) To make sure if data is flowing thru the pipe start 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 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/