read FILEHANDLE,SCALAR,LENGTH,OFFSET
read FILEHANDLE,SCALAR,LENGTH

尝试从指定的 FILEHANDLE 中读取 LENGTH 个字符的数据到变量 SCALAR。返回实际读取的字符数,文件末尾返回 0,如果出现错误则返回 undef(在这种情况下,$! 也将被设置)。SCALAR 将被扩展或缩小,以便最后读取的字符成为读取后标量中的最后一个字符。

可以指定一个 OFFSET,将读取的数据放置在字符串中的某个位置,而不是开头。负 OFFSET 指定从字符串末尾开始向后计数的字符数。大于 SCALAR 长度的正 OFFSET 会导致字符串用 "\0" 字节填充到所需大小,然后将读取结果追加到后面。

该调用是通过 Perl 或系统本地的 fread(3) 库函数实现的,通过应用于句柄的 PerlIO 层。要获得真正的 read(2) 系统调用,请参见 sysread.

请注意字符:根据文件句柄的状态,读取的是(8 位)字节或字符。默认情况下,所有文件句柄都操作字节,但例如,如果文件句柄已使用 :utf8 I/O 层打开(参见 openopen 编译指示),则 I/O 将操作 UTF8 编码的 Unicode 字符,而不是字节。类似地,对于 :encoding 层:在这种情况下,几乎可以读取任何字符。