Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: Reading a file live!

by golux (Pilgrim)
on Mar 07, 2014 at 19:38 UTC ( #1077447=note: print w/ replies, xml ) Need Help??


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


Comment on Re: Reading a file live!
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1077447]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (6)
As of 2014-09-21 22:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (176 votes), past polls