start page | rating of books | rating of authors | reviews | copyrights

Programming Perl

Programming PerlSearch this book
Previous: 3.2.167 system Chapter 3
Functions
Next: 3.2.169 tell
 

3.2.168 syswrite

syswrite 

FILEHANDLE

, 

SCALAR

, 

LENGTH

, 

OFFSET

 syswrite 

FILEHANDLE

, 

SCALAR

, 

LENGTH

This function attempts to write LENGTH bytes of data from variable SCALAR to the specified FILEHANDLE using write (2). The function returns the number of bytes actually written, or the undefined value on error. You should be prepared to handle the problems that standard I/O normally handles for you, such as partial writes. The OFFSET , if specified, says where in the string to start writing from, in case you're using the string as a buffer, for instance, or you need to recover from a partial write. To copy data from filehandle FROM into filehandle TO , use something like:

$blksize = (stat FROM)[11] || 16384;  # preferred block size? while ($len = sysread FROM, $buf, $blksize) {     if (!defined $len) {         next if $! =~ /^Interrupted/;         die "System read error: $!\n";     }     $offset = 0;     while ($len) {          # Handle partial writes.         $written = syswrite TO, $buf, $len, $offset;         die "System write error: $!\n"             unless defined $written;         $len -= $written;         $offset += $written;     } }

Do not mix calls to ( print or write ) and syswrite on the same filehandle unless you are into heavy wizardry.


Previous: 3.2.167 system Programming Perl Next: 3.2.169 tell
3.2.167 system Book Index 3.2.169 tell