http://www.perlmonks.org?node_id=1020487


in reply to File seek

You're not error checking

$ perl -le " open my($fh), 1 or die$!; seek $fh, 1,0 or die$!; " $ perl -le " open my($fh), 1 or die$!; seek $fh, -1,0 or die$!; " Invalid argument at -e line 1.

You have the file size, if you want to seek to -500, do some math :)

Replies are listed 'Best First'.
Re^2: File seek
by Anonymous Monk on Feb 25, 2013 at 10:37 UTC

    I am seeking to -500 as i know that the keyworn(<run>)wil be in last 500 characters

      I am seeking to -500 as i know that the keyworn(<run>)wil be in last 500 characters

      no you aren't, seek doesn't take negative offsets, like the error message I showed says

        From the documentation

        The values for WHENCE are 0 to set the new position in bytes to POSITION; 1 to set it to the current position plus POSITION; and 2 to set it to EOF plus POSITION, typically negative.

        I suspect your error message is because you are trying to seek to a negative offset from the beginning of the file.

        Cheers,

        JohnGG

        seek (file, distance, from)

        As you can see, seek requires three arguments:

        file: which is the file variable representing the file in which to skip

        distance: which is an integer representing the number of bytes (characters) to skip

        from:which is either 0, 1, or 2

        0 - The number of bytes to skip from beginning of the file.

        1 - The number of bytes to skip from current location of the file.

        2 - The number of bytes to skip from end of the file.

        seek(CONFIRMEDOUTPUTFILE, -500, 2);

        The above line skip backward 500 bytes from the end of the file.