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


in reply to Reading a file live!

Hi negativ_m,

My suggestion would be to assign a variable to the length of the file prior to the first append. Then, just check the filesize; when it grows you know you've got more text to read:

my $len = (-s "file.txt") || 0; system ("perl eck.pl $var > file.txt &"); # ... later .... my $newlen = (-s "file.txt") || 0; if ($newlen > $len) { my @newlines = read_new_lines("file.txt", $len); $len = $newlen; # Adjust length to new end of file }

The subroutine read_new_lines() would look something like this:

sub read_new_lines { my ($fn, $offset) = @_; use IO::File; my $fh = new IO::File($fn); $fh or die "Failed to read '$fn' ($!)\n"; seek($fh, $offset, 1) or die "Failed seek ($!)\n"; chomp(my @lines = <$fh>); return (@lines); }

I use this trick a lot for webpages which need to monitor continuously updating logfiles.

say  substr+lc crypt(qw $i3 SI$),4,5