sysread FILEHANDLE,SCALAR,LENGTH,OFFSET
sysread FILEHANDLE,SCALAR,LENGTH

嘗試使用 read(2) 從指定的 FILEHANDLE 讀取 LENGTH 位元組的資料到變數 SCALAR 中。它會繞過任何 PerlIO 層,包括緩衝 IO(但會受到稍後描述的 :utf8 層影響),因此將此與其他類型的讀取、printwriteseektelleof 混合使用可能會造成混淆,因為 :perlio:crlf 層通常會緩衝資料。傳回實際讀取的位元組數目、檔案結束時的 0,或是有錯誤時為 undef(後者的情況下 $! 也會設定)。SCALAR 會成長或縮小,以便實際讀取的最後一個位元組成為讀取後純量中的最後一個位元組。

可以指定 OFFSET,將讀取的資料放在字串中開頭以外的位置。負 OFFSET 指定從字串結尾往回計算這麼多個字元的位置。正 OFFSET 大於 SCALAR 的長度,會導致字串在讀取結果附加之前,以 "\0" 位元組填補為所需的長度。

沒有 syseof() 函數,這沒關係,因為 eof 在裝置檔案(例如 tty)上反正無法正常運作。使用 sysread 並檢查傳回值是否為 0,以判斷是否已完成。

請注意,如果檔案句柄已標記為 :utf8sysread 會擲回例外。:encoding(...) 層會隱含地引入 :utf8 層。請參閱 binmodeopenopen 實用範例。