syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET
syswrite FILEHANDLE,SCALAR,LENGTH
syswrite FILEHANDLE,SCALAR

尝试使用 write(2) 将变量 SCALAR 中的 LENGTH 字节数据写入指定的 FILEHANDLE。 如果未指定 LENGTH,则写入整个 SCALAR。 它绕过任何 PerlIO 层,包括缓冲 IO(但受 :utf8 层的存在影响,如后文所述),因此将其与读取(除了 sysread)混合使用,printwriteseektelleof 可能会造成混淆,因为 :perlio:crlf 层通常会缓冲数据。 返回实际写入的字节数,或 undef 如果出现错误(在这种情况下,errno 变量 $! 也将被设置)。 如果 LENGTH 大于 OFFSET 后 SCALAR 中可用的数据,则只写入可用的数据。

可以指定 OFFSET 以从字符串的某个部分而不是开头写入数据。 负 OFFSET 指定从字符串末尾反向计数的写入字符数。 如果 SCALAR 的长度为零,则只能使用 OFFSET 为 0。

警告:如果文件句柄标记为 :utf8syswrite 将引发异常。 :encoding(...) 层隐式地引入了 :utf8 层。 或者,如果句柄未标记为编码,但您尝试写入代码点超过 255 的字符,则会引发异常。 请参阅 binmodeopenopen 准则。