=over =item tell FILEHANDLE X =item tell Returns the current position I for FILEHANDLE, or -1 on error. FILEHANDLE may be an expression whose value gives the name of the actual filehandle. If FILEHANDLE is omitted, assumes the file last read. Note the emphasis on bytes: even if the filehandle has been set to operate on characters (for example using the C<:encoding(UTF-8)> I/O layer), the L|/seek FILEHANDLE,POSITION,WHENCE>, L|/tell FILEHANDLE>, and L|/sysseek FILEHANDLE,POSITION,WHENCE> family of functions use byte offsets, not character offsets, because seeking to a character offset would be very slow in a UTF-8 file. The return value of L|/tell FILEHANDLE> for the standard streams like the STDIN depends on the operating system: it may return -1 or something else. L|/tell FILEHANDLE> on pipes, fifos, and sockets usually returns -1. There is no C function. Use L|/sysseek FILEHANDLE,POSITION,WHENCE> for that. Do not use L|/tell FILEHANDLE> (or other buffered I/O operations) on a filehandle that has been manipulated by L|/sysread FILEHANDLE,SCALAR,LENGTH,OFFSET>, L|/syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET>, or L|/sysseek FILEHANDLE,POSITION,WHENCE>. Those functions ignore the buffering, while L|/tell FILEHANDLE> does not. =back