server.pl: use IO::Socket::INET; $server = new IO::Socket::INET(Timeout => 20, Proto => "tcp", LocalPort => 3000, Listen => 5) || die "failed to establish socket\n"; $client = $server->accept; while (1) { sleep(2); if ($client->connected) { print "still connected\n"; } else { print "disconnected\n"; } } client.pl: use IO::Socket::INET; $client = new IO::Socket::INET(Timeout => 20, Proto => "tcp", PeerPort => 3000, PeerAddr => "localhost") || die "connection failed"; while (1) { sleep(2); if ($client->connected) { print "still connected\n"; } else { print "disconnected\n"; } }