while ( ! eof ) { chunklen = 0; chunknum = 0; open( FOUT, ">chunk" . chunknum++ ); # read into buffer, but at end of buffer in case of leftovers while ( len = read( FIN, buffer, 64000, length(buffer) ) ) { if ( chunklen + len > 400MB ) { # got to end of chunk, deal with newline lastnewline = rindex( buffer, "\n" ); if ( lastnewline ) { # flush up to last found newline write( FOUT, substr( buffer, 0, lastnewline ) ); substr( buffer, 0, lastnewline ) = ""; close( FOUT ); last; # skip to next file } else { # flush entire buffer (no newline found) write( FOUT, buffer ); buffer = ""; } } else { # not at end of chunk, just write buffer print( FOUT, buffer ); buffer = ""; chunklen += len; } } # while we've got something to read } # while not at eof of input