roy%cybrspc@cs.umn.edu (Roy M. Silvernail) (12/09/90)
Here's something I've noticed with PL41 vs. PL18 on MS-DOS. I have some scripts that spawn processes via open(HANDLE, "thisprog |"). The scripts also print progress reports. The general structure is print "getting data 1..."; open (INFILE1, "file1"); @aa = <INFILE1>; close (INFILE1); print " got it\n"; print "getting data 2..."; open (INFILE2, "thisprog |"); @bb = <INFILE2>; close (INFILE2); print " got it\n"; print "getting data 3..."; open (INFILE3, "file3"); @cc = <INFILE3>; close (INFILE3); print " got it\n"; In this example, under PL18, the progress reports would print to the screen as expected. Now, with PL41, the first one will go as expected, but all print statements executed _after_ the piped input open call get hung up somehow. It seems that the STDOUT buffer is not being flushed to the screen after a print statement, once a piped command is performed. The 'lost' lines will show up after program termination, or when I open a disk file and print it to the screen. I _do_ explicitly close all piped commands. Is this a recognized misfeature, or is it only in the DOS port of Perl? Any ideas on how I can fix it? -- Roy M. Silvernail |+| roy%cybrspc@cs.umn.edu |+| #define opinions ALL_MINE; main(){float x=1;x=x/50;printf("It's only $%.2f, but it's my $%.2f!\n",x,x);} "This is cyberspace." -- Peter da Silva :--: "...and I like it here!" -- me