in reply to PIPE problem

your program whould work, if you replace 1.3 with 1..3 and 1.10 with 1..10. .. is the range operator. And you may remove the first 3 lines from your example. Ahh and a typo on $ |= 1; it should read $| = 1; here the whole thing again.
#!/usr/bin/perl use strict; $SIG{PIPE} = 'IGNORE'; open( PIPE, "|net2.pl" ) or die "Cannot open pipe:$!"; select PIPE; $| = 1; select STDOUT; my $count = 0; for ( 1 .. 10 ) { warn "Writing line $_\n"; if ( print PIPE "This is line number $_\n" ) { $count++; } else { warn " An error occured during writing :$!"; last; } sleep 1; } close PIPE or die " Cannot close pipe : $!"; print "Wrote $count lines of text \n";
And net2.pl
#!/usr/bin/perl use strict; for (1..3) { last unless defined (my $line = <>); warn " Read_three,got $line\n"; }
Boris