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

嘗試從指定的檔案句柄中讀取 LENGTH 個字元資料到變數 SCALAR 中。傳回實際讀取的字元數,檔案結束時傳回 0,或是有錯誤發生時傳回未定義(後者情況下,$! 也會設定)。SCALAR 會成長或縮小,使得實際讀取的最後一個字元成為讀取後純量中的最後一個字元。

可以指定 OFFSET,將讀取的資料放置在字串中除了開頭以外的位置。負的 OFFSET 指定從字串末尾倒數指定個數的字元位置。正的 OFFSET 大於 SCALAR 的長度,會在將讀取結果附加之前,以 "\0" 位元組將字串填補到所需的長度。

此呼叫是根據 Perl 或系統的原生 fread(3) 函式庫函式實作,透過套用於控制代碼的 PerlIO 層。如要取得真正的 read(2) 系統呼叫,請參閱 sysread

請注意字元:根據檔案代碼的狀態,會讀取 (8 位元) 位元組或字元。預設情況下,所有檔案代碼都會在位元組上執行,但例如如果檔案代碼已使用 :utf8 I/O 層開啟 (請參閱 openopen 實用程式),I/O 會在 UTF8 編碼的 Unicode 字元上執行,而非位元組。:encoding 層也是如此:在這種情況下,幾乎可以讀取任何字元。