返回 FILEHANDLE 的当前位置(以字节为单位),如果出错则返回 -1。FILEHANDLE 可以是一个表达式,其值给出实际文件句柄的名称。如果省略 FILEHANDLE,则假定为最后读取的文件。
请注意字节的强调:即使文件句柄已设置为对字符进行操作(例如使用 :encoding(UTF-8)
I/O 层),seek
、tell
和 sysseek
函数系列使用的是字节偏移量,而不是字符偏移量,因为在 UTF-8 文件中,按字符偏移量进行查找会非常慢。
对于标准流(如 STDIN),tell
的返回值取决于操作系统:它可能返回 -1 或其他值。对于管道、FIFO 和套接字,tell
通常返回 -1。
没有 systell
函数。为此,请使用 sysseek($fh, 0, 1)
。
不要在经过 sysread
、syswrite
或 sysseek
操作的文件句柄上使用 tell
(或其他缓冲 I/O 操作)。这些函数会忽略缓冲,而 tell
则不会。