use strict; use warnings; use IO::Socket qw( ); my $lsn = IO::Socket::INET->new(Listen => 1, LocalPort => 8080); my $r_in = my $w_in = my $e_in = ''; vec($r_in, fileno($lsn), 1) = 1; vec($r_in, 100, 1) = 1 if $ARGV[0]; my $nfound = select( my $r_ready = $r_in, my $w_ready = $w_in, my $e_ready = $e_in, 2.2, ); $nfound >= 0 or die("select: (" . (0+$^E) . ") $^E\n"); if ($nfound) { print("nfound = $nfound\n"); } else { print("Timeout\n"); }