=over =item sysseek FILEHANDLE,POSITION,WHENCE X X Sets FILEHANDLE's system position in bytes using L. FILEHANDLE may be an expression whose value gives the name of the filehandle. The values for WHENCE are C<0> to set the new position to POSITION; C<1> to set the it to the current position plus POSITION; and C<2> to set it to EOF plus POSITION, typically negative. Note the I: even if the filehandle has been set to operate on characters (for example by using the C<:encoding(utf8)> I/O layer), L|/tell FILEHANDLE> will return byte offsets, not character offsets (because implementing that would render L|/sysseek FILEHANDLE,POSITION,WHENCE> unacceptably slow). L|/sysseek FILEHANDLE,POSITION,WHENCE> bypasses normal buffered IO, so mixing it with reads other than L|/sysread FILEHANDLE,SCALAR,LENGTH,OFFSET> (for example L|/readline EXPR> or L|/read FILEHANDLE,SCALAR,LENGTH,OFFSET>), L|/print FILEHANDLE LIST>, L|/write FILEHANDLE>, L|/seek FILEHANDLE,POSITION,WHENCE>, L|/tell FILEHANDLE>, or L|/eof FILEHANDLE> may cause confusion. For WHENCE, you may also use the constants C, C, and C (start of the file, current position, end of the file) from the L module. Use of the constants is also more portable than relying on 0, 1, and 2. For example to define a "systell" function: use Fcntl 'SEEK_CUR'; sub systell { sysseek($_[0], 0, SEEK_CUR) } Returns the new position, or the undefined value on failure. A position of zero is returned as the string C<"0 but true">; thus L|/sysseek FILEHANDLE,POSITION,WHENCE> returns true on success and false on failure, yet you can still easily determine the new position. =back