Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: Reading a file live!

by golux (Chaplain)
on Mar 07, 2014 at 19:38 UTC ( [id://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

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (4)
As of 2024-04-24 11:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found