Когда я запускаю приведенный ниже код в системе Linux, как и ожидалось, он выводит Nothing is ready
примерно каждые две секунды, а также выводит все, что вводится на консоль.
Но в Windows can_read
мгновенно возвращается с нулевыми элементами.
use IO::Select;
my $sel = IO::Select->new();
$sel->add(\*STDIN);
while ( 1 ) {
my @ready = $sel->can_read(2);
if ( scalar @ready == 0 ) {
print "Nothing is ready\n";
}
foreach my $fh ( @ready ) {
if ( $fh eq \*STDIN ) {
my $in = <STDIN>;
print "got $in from stdin\n";
}
}
}
Кажется, что select
работает только на Windows-сокетах, а не на STDIN. Как я могу использовать IO::Select
на STDIN в системе Windows?