On Wed, May 28, 2003 at 08:58:21AM -0400, Mark Jason Dominus wrote: > Rafael Garcia-Suarez <rgarciasuarez@free.fr>: > > setbuf/setvbuf aren't available with a PerlIO-enabled perl. > > Thanks. > > Here's my problem. I want two processes to access the same (small) > file concurrently. Process A reads part of the file. Process B > modifies part of the file. Then process A wants to see the change. > But it can't, because the block it just read is buffered, and > subsequent reads are all coming from the buffer, which records the > state of the file before the change, instead of from the real file. > > I thought my choices were > > a) use setvbuf() to discard the buffer, perhaps temporarily, or > > b) discard the buffered I/O system entirely and rewrite everything in > terms of sysread(), effectively reimplementing the entire buffered I/O > subsystem in Perl. > > But now it appears that my only choice is (b). This isn't very > attractive. Is there some other option I've overlooked? You could try using seek. my $pos = tell($fh); seek($fh,0,0); seek($fh,$pos,0); Graham.Thread Previous | Thread Next