#! perl -slw use strict; use threads; use IO::Socket; use IO::Select; $|++; sub selectableSTDIN { my $true = 1; my $in = IO::Socket::INET->new( LocalAddr => '127.0.0.1:65521', Proto => "udp", ) or die "Failed to bind port 65521"; ioctl( $in, 0x8004667e, \$true ) or die $!; my $out = IO::Socket::INET->new( PeerAddr => '127.0.0.1:65521', Proto => "udp" ) or die "Failed to bind remote port 65521"; async { $out->send( $_ ) while ; }->detach; return $in; } my $sel = IO::Select->new( selectableSTDIN() ); while( 1 ) { for my $src ( $sel->can_read( 0.1 ) ) { print "\n", scalar <$src>; } printf '.'; } __END__ C:\test>selectableSTDIN.pl ...........f.r..e.d.. fred ........b..i....l.l... bill ..........j..o..h..n... . john .......j.a...c...k... jack ........Terminating on signal SIGINT(2)