in reply to Re: FILE operation in PERL
in thread FILE operation in PERL

Thanks for your tips...It looks like now I am really close to solving the problem...Just one glitch... I have used the "tell" function to store the location of interest...and then I use the "seek" function to take me there...When I then try to read using $line=<FILE>, I am able to read the next line following the line I actually want....Can u please provide any input on this...

Replies are listed 'Best First'.
Re: Re: Re: FILE operation in PERL
by dws (Chancellor) on Jul 19, 2003 at 08:18 UTC
    When I then try to read using $line=<FILE>, I am able to read the next line following the line I actually want...

    Do the tell() before you read the line. Otherwise, as you've noticed, you're one line too late.

      I did exactly that...but even then when I initiate the $line=<file> command somehow, the cursor is moving to the next line...

        As a complete guess, I beting that you are forgetting that we think of the first line of a file as being line 1, but thatthe first element of an array is (in the absence of deprecated useage) line 0 (zero).

        In other words, if you want to read line 30 of the file, you almost certainly need to do

         tell FH, $lines[29], 0; $line = <FH>;

        Another possibility is that you are forgetting to set $lines[0] = 0; and are instead doing

        my @lines; ## This should be my @lines = 0; while( <FH> ) { push @lines, seek FH; ... }

        Unless you push a 0 onto @lines, your first index position will be the start of line 2 instead of the start of line 1 and this will mean all your indexes are out-by-one from then on.


        Examine what is said, not who speaks.
        "Efficiency is intelligent laziness." -David Dunham
        "When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller