IO-FD
view release on metacpan or search on metacpan
t/03-select.t view on Meta::CPAN
use Test::More tests=>1;
use feature ":all";
use IO::FD;
use Fcntl;
ok defined IO::FD::pipe(my $read,my $write);
for($read,$write){
my $flags=IO::FD::fcntl( $_, F_GETFL,0);
IO::FD::fcntl($_, F_SETFL, $flags|O_NONBLOCK);
}
for(0..10){
my $rvec="";
my $wvec="";
vec($rvec, $read,1)=1; #
vec($wvec, $write,1)=1;
my $count=select( $rvec, $wvec, undef, 1);
#say STDERR "COUNT fds ready $count";
#say STDERR "Read: ",unpack "B*", $rvec;
#say STDERR "Write: ",unpack "B*", $wvec;
#say STDERR $write;
if(vec($rvec, $read,1)){
IO::FD::sysread($read,my $buffer="",20);
#say STDERR "READ FROM PIPE: $buffer";
}
if(vec($wvec, $write, 1)){
IO::FD::syswrite($write, "Writing..\n");
}
}
( run in 0.944 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )