[comp.lang.perl] Another note on DOS PL41

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