嘗試使用 write(2) 將變數 SCALAR 的 LENGTH 位元組資料寫入指定的 FILEHANDLE 中。如果未指定 LENGTH,則會寫入整個 SCALAR。它會略過任何 PerlIO 層,包括緩衝式 IO(但會受到 :utf8
層的存在影響,如下所述),因此將此與讀取(sysread)
除外)、print
、write
、seek
、tell
或 eof
混合使用可能會造成混淆,因為 :perlio
和 :crlf
層通常會緩衝資料。傳回實際寫入的位元組數,或在發生錯誤時傳回 undef
(在此情況下,errno 變數 $!
也會設定)。如果 LENGTH 大於 OFFSET 之後 SCALAR 中可用的資料,則只會寫入可用的資料量。
可以指定 OFFSET 來從字串中除了開頭以外的部分寫入資料。負的 OFFSET 指定從字串結尾倒數寫入這麼多個字元。如果 SCALAR 的長度為零,則只能使用 OFFSET 0。
警告:如果檔案句柄標記為 :utf8
,syswrite
會引發例外。:encoding(...)
層會隱含地引入 :utf8
層。或者,如果句柄未標記為編碼,但您嘗試寫入碼點大於 255 的字元,則會引發例外。請參閱 binmode
、open
和 open 實用程式。