I read select but why?
All the debuf() does is apply $|++ to $parent, thus making the handle line-buffered rather than block buffered.
Hence, the \n in print $parent "exit now\r\n\r"; causes the buffer to be flushed through and the read then completes.
(BTW: The \rs do nothing! As the pipe is in text mode, the \n will be translated to \cM\cJ on write and then back to \cJ when read back.)
why would changing the default handle affect it?
if you look closely at debuf(), it selects the handle ($parent) that is passed to it; does the $++ whilst that handle is selected, and then re-selects the original default handle. Ie. It is equivalent to:
sub debuf{
my $old = select( $_[0] );
$|++;
select( $old }
}
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
/code |