use Fcntl; # set non blocking and unbuffered my $flags = fcntl( OUTHANDLE, F_GETFL, 0 ); cntl( OUTHANDLE, F_SETFL, $flags | O_NONBLOCK ); select((select(OUTHANDLE), $|=1)[0]);