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

Perltail

by turnstep (Parson)
on Mar 12, 2001 at 23:05 UTC ( #63906=snippet: print w/ replies, xml ) Need Help??

Description:

A perl program that acts similar to "tail" in unix. Just provide the name of the file, an optional number of lines, and an optional characters per line.

#!/usr/bin/perl

## PerlTail
## Does a "tail" of a file using seek.

use strict;

my $bigfile = shift or die "Usage: $0 filename <lines> <linesize>\n";

my $linesback = shift || 10; ## How many "lines" back to read

my $charsperline = shift || 80; ## A rough guess

open(BIG, $bigfile) or die "Could not open $bigfile: $!\n";

## Make a reasonable guess as to how far back to go.
my $gobackchars = $linesback*$charsperline+1;

## Figure out how big it is
my $filesize = -s $bigfile;

## We do not want to go back *too* far:
$gobackchars = $filesize if $gobackchars > $filesize;

seek(BIG,-$gobackchars,2);

## We probably arrived in the middle of a line,
## so throw out everything to the start of a new line
<BIG>;

## Now we print out the rest of the lines:
print while(<BIG>);

close(BIG);

Update: There is noting wrong with any of the programs/modules already out there. This is just a *snippet*, a quick little piece of code I wrote that demonstrates a good use of seek. Sheesh! :)

Comment on Perltail
Download Code
Re: Perltail
by fundflow (Chaplain) on Mar 12, 2001 at 23:40 UTC
    Have you seen this in Perl Power Tools?

(tye)Re: Perltail
by tye (Cardinal) on Mar 12, 2001 at 23:48 UTC

    When I ask for the last 10 lines of a file, I usually don't like to instead see the last 800 characters of the file (minus any partial line).

    Sorry, I find this a pretty poor reinvention of this wheel.

            - tye (but my friends call me "Tye")
(ar0n: CPAN) Re: Perltail
by ar0n (Priest) on Mar 13, 2001 at 02:15 UTC

Back to Snippets Section

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (5)
As of 2014-09-23 01:09 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

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











    Results (210 votes), past polls