syswrite et sysread renvoie le nombre d'octets lus ou ecrit
perldoc:
#############
## sysread ##
#############
sysread FILEHANDLE,SCALAR,LENGTH,OFFSET
sysread FILEHANDLE,SCALAR,LENGTH
Attempts to read LENGTH *characters* of data into variable
SCALAR from the specified FILEHANDLE, using the system call
read(2). It bypasses buffered IO, so mixing this with other
kinds of reads, "print", "write", "seek", "tell", or "eof" can
cause confusion because stdio usually buffers data. Returns the
number of characters actually read, 0 at end of file, or undef
if there was an error. SCALAR will be grown or shrunk so that
the last byte actually read is the last byte of the scalar after
the read.
Note the *characters*: depending on the status of the
filehandle, either (8-bit) bytes or characters are read. By
default all filehandles operate on bytes, but for example if the
filehandle has been opened with the ":utf8" I/O layer (see
"open", and the "open" pragma, open), the I/O will operate on
characters, not bytes.
An OFFSET may be specified to place the read data at some place
in the string other than the beginning. A negative OFFSET
specifies placement at that many characters counting backwards
from the end of the string. A positive OFFSET greater than the
length of SCALAR results in the string being padded to the
required size with "\0" bytes before the result of the read is
appended.
There is no syseof() function, which is ok, since eof() doesn't
work very well on device files (like ttys) anyway. Use sysread()
and check for a return value for 0 to decide whether you're
done.
##############
## syswrite ##
##############
syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET
syswrite FILEHANDLE,SCALAR,LENGTH
syswrite FILEHANDLE,SCALAR
Attempts to write LENGTH characters of data from variable SCALAR
to the specified FILEHANDLE, using the system call write(2). If
LENGTH is not specified, writes whole SCALAR. It bypasses
buffered IO, so mixing this with reads (other than sysread()),
"print", "write", "seek", "tell", or "eof" may cause confusion
because stdio usually buffers data. Returns the number of
characters actually written, or "undef" if there was an error.
If the LENGTH is greater than the available data in the SCALAR
after the OFFSET, only as much data as is available will be
written.
An OFFSET may be specified to write the data from some part of
the string other than the beginning. A negative OFFSET specifies
writing that many characters counting backwards from the end of
the string. In the case the SCALAR is empty you can use OFFSET
but only zero offset.
Note the *characters*: depending on the status of the
filehandle, either (8-bit) bytes or characters are written. By
default all filehandles operate on bytes, but for example if the
filehandle has been opened with the ":utf8" I/O layer (see
"open", and the open pragma, open), the I/O will operate on
characters, not bytes.