sysseek FILEHANDLE,POSIZIONE,DA_DOVE
Imposta la posizione di sistema del FILEHANDLE in byte, usando la chiamata di sistema
lseek(2). FILEHANDLE può essere un'espressione il cui valore fornisce il nome del
filehandle. I valori per DA_DOVE sono 0 per impostare la nuova posizione a POSIZIONE, 1
per impostarla alla posizione corrente più POSIZIONE e 2 per impostarla ad EOF
più POSIZIONE (tipicamente negativa).
Notate l'in byte: anche se il filehandle è stato impostato per operare su caratteri
(per esempio usando lo strato di I/O :utf8), tell() restituirà scostamenti di byte,
non scostamenti di caratteri (visto che implementare questo renderebbe sysseek() molto lenta).
sysseek() aggira il normale IO con buffer, dunque unire questo con i vari read (oltre a
sysread, per esempio <> oppure read()), print, write, seek, tell o eof,
potrebbe causare confusione.
Per DA_DOVE, si potrebbe anche usare le costanti SEEK_SET, SEEK_CUR e SEEK_END (inizio
del file, posizione corrente, fine del file) dal modulo Fcntl. L'uso delle costanti è
anche più portabile che fare affidamento su 0, 1 e 2. Per esempio, per definire una
funzione "systell":
use Fnctl 'SEEK_CUR';
sub systell { sysseek($_[0], 0, SEEK_CUR) }
Restituisce la nuova posizione oppure il valore indefinito in caso di insuccesso. Un valore di
posizione pari a zero viene restituito sotto forma della stringa "0 ma vero"; dunque
sysseek restituisce vero in caso di successo e falso in caso di insuccesso, tuttavia la
nuova posizione può ancora essere determinata facilmente.