尝试从指定的 FILEHANDLE 中读取 LENGTH 个字符的数据到变量 SCALAR。返回实际读取的字符数,文件末尾返回 0
,如果出现错误则返回 undef(在这种情况下,$!
也将被设置)。SCALAR 将被扩展或缩小,以便最后读取的字符成为读取后标量中的最后一个字符。
可以指定一个 OFFSET,将读取的数据放置在字符串中的某个位置,而不是开头。负 OFFSET 指定从字符串末尾开始向后计数的字符数。大于 SCALAR 长度的正 OFFSET 会导致字符串用 "\0"
字节填充到所需大小,然后将读取结果追加到后面。
该调用是通过 Perl 或系统本地的 fread(3) 库函数实现的,通过应用于句柄的 PerlIO 层。要获得真正的 read(2) 系统调用,请参见 sysread.
请注意字符:根据文件句柄的状态,读取的是(8 位)字节或字符。默认情况下,所有文件句柄都操作字节,但例如,如果文件句柄已使用 :utf8
I/O 层打开(参见 open
和 open 编译指示),则 I/O 将操作 UTF8 编码的 Unicode 字符,而不是字节。类似地,对于 :encoding
层:在这种情况下,几乎可以读取任何字符。