Клиентский сценарий для психотерапевтического сервера.
Прежде чем перейти к дальнейшему описанию серверов с ветвлением, подготовим сценарий, с помощью которого можно было бы взаимодействовать с психотерапевтическим сервером. В конце концов, нас никто не заставляет пользоваться давно устаревшей программой telnet, когда мы можем использовать Perl! А если говорит серьезно, то этот сценарий иллюстрирует возможность использования функции sysread () и syswrite () для работы с небуферизованными потоками байтов.
На первый взгляд кажется, что сценарий представленный ранее вполне соответствует требованиям, предъявляемым к клиентской про грамме для этого сервера; однако при использовании этого сценария возникает проблема, поскольку он был разработан для построчного обмена данными, когда сервер отправляет клиенту целые строки, оканчивающиеся символами CRLF. Однако психотерапевтический сервер не полностью ориентирован на обработку строковых данных. Во-первых, в нем для обозначения конца строк применяются символы, которые предусмотрены в модуле Chatbot::Eliza (оказалось, что это логический символ обозначения конца строки “n”). Во-вторых, приглашение “you:”, отправляемое сервером после вывода каждого очередного высказывания, не заканчивается символом конца строки. В результате совместного действия этих факторов оказывается, что после вызова с указанием порта психотерапевтического сервера сценарии не выводит никакой информации.
Здесь нужен более универсальный клиентский сценарий, ориентированный на обработку потоков байтов, который вводит и выводит данные в виде произвольных фрагментов, как только они становятся доступными, а не ожидает появления законченных строк.