in reply to Simulating UNIX's "tail" in core Perl
My personal pick (irrespective of language) for an 'inside' solution would be to create a FILO (First In Last Out) style of collection to the same size as the number of lines you wish to 'tail'.
You then can go through the entire file, reading in a line to the collection and removing the oldest line from the collection.
To paraphrase one example:
Create an Array equal in size to number of 'tail elements' required
Set WritePointer to the First Element
Start Loop
Read Line into Array at WritePointer
Increment WritePointer
If WritePointer>Number of Array Elements then Set WritePointer to First Array Element
End Loop if end of File
At the end of this you'll have an array containing the required lines. All you've got to do is read the array elements back in the 'reverse direction' until you get back to the WritePointer element.
If all of this seems like a load of old horse dribbblings to you, I'd suggest looking up the term FILO in your nearest Computer Science book. :)