Cerca di leggere un numero di byte di dati pari a LUNGHEZZA nella variabile SCALARE dal
FILEHANDLE specificato, utilizzando la chiamata di funzione read(2). Essa aggira l'IO con
buffer, dunque mescolarla con altri tipi di read, print, write, seek, tell o eof
potrebbe causare confusione visto che il perlio o lo stdio di solito utilizzano un buffer per
i dati. Restituisce il numero di caratteri effettivamente letti, 0 alla fine del file,
oppure undef se c'è stato un errore (in quest'ultimo caso viene anche impostato $!).
SCALARE verrà aumentato o diminuito in maniera che l'ultimo byte effettivamente letto sia
l'ultimo byte dello scalare dopo la lettura.
Uno SCOSTAMENTO può essere specificato per posizionare i dati letti da qualche
parte della stringa che non sia l'inizio. Uno SCOSTAMENTO negativo specifica il posizionamento
a quel numero di caratteri, contando a ritroso a partire dalla fine della stringa.
Uno SCOSTAMENTO positivo maggiore della lunghezza dello SCALARE ha come risultato il riempimento
della stringa alla dimensione richiesta con dei byte "\0" prima che il risultato della lettura sia
avvenuto.
Non c'è una funzione syseof(), il che è ok, visto che comunque eof() non funziona molto bene sui file di device (come ttys). Usate sysread() e controllate che il valore restituito sia pari a 0 per decidere se si ha concluso.
Va notato che se il filehandle è stato marcato come :utf8, verranno scritti
caratteri Unicode invece di byte (la LUNGHEZZA, lo SCOSTAMENTO e il valore restituito da
sysread() sono in caratteri Unicode). Lo strato :encoding(...) introduce implicitamente lo
strato :utf8. Consultate binmode, open e la direttiva di open, open.