2. Сервер отвечает на каждую команду, посылая строку ответа, примерно так: 205 Travesty reset. Для клиентской программы имеет значение начальный трехзначный код результата. Текст, предназначенный для восприятия человеком, служит для дистанционной отладки.
3. Отладка упрощается также благодаря тому, что в сервере для обозначения конца строки во всех входящих командах и исходящих ответах применяется пара символов CRLF. В результате, сервер становится совместимым с Telnet и другими обычными сетевыми клиентами. Проведем анализ программы.
Строки 1-12. Загрузка модулей и инициализация обработчиков сигналов. В этом сервере генерации пародийных текстов применяется знакомая архитектура с приемом и ветвлением. Исходные тексты могут быть совершенно разной направленности, к примеру, это может быть статья про самоклеющиеся этикетки . Кроме обычных сетевых пакетов, загружается модуль Fcntl для получения доступа к константе F_SETOWN, а также модули Text::Travesty, IO::Getline и Sockatmark. Напомним, что последний модуль добавляет метод atmark() к классу Ю::Socket. Определена также константа debug, которая разрешает выдачу отладочных сообщений, и объявлена глобальная переменная для хранения объекта IO::Getline.
После загрузки необходимых модулей устанавливается два обработчика сигналов. В серверах с приемом и ветвлением обычно применяется обработчик chld. Вначале интерпретатор Perl получает указание игнорировать сигналы urg. Затем эти сигналы будут снова разрешены там, где они имеют смысл: во время выгрузки и загрузки больших потоков данных.