in reply to end of file!

If the file is small, then the above answer by le is acceptable.

If you expect the file to be large (such as log file) and you know the approximate format of the file (e.g. the lines tend to have max width of 80 characters), then you can use seek(-81,2) and then use the above solution to get the last 1.5 lines.

You might want to check if it contains a newline, as otherwise you probably need to read more.
Here is a code snippet:
open (F,"the file"); seek(F,-81,2); while(<F>) { $l=$_} warn if $.<1; # Make sure we read more than one line

Replies are listed 'Best First'.
RE: Re: end of file!
by c-era (Curate) on Jul 26, 2000 at 15:59 UTC
    If you know what the longest the last line in the file is, this can work nicely. You do the seek as above and then put the rest of the file in an array, here is an example:
    my @data; # Store the last part of the file my $length = -10; # enter the longest length of the last line (and add + a few bytes to it), then negate it open (F,"test") || die "Can't open file"; # open the file or die seek (F,$length,2); # Go back $length @data = <F>; # Get the rest of the file in @data print $data[$#data]; # Print the last line
    Hope this helps.