Строки 26-32. Выполнение операции чтения из дескриптора stdin. Если дескриптор STDIN готов для чтения, выполняется выборка строки из его оболочки IO::Getline путем вызова метода getline (). Напомним, что метод IO::Getline->getline () действует аналогично функции read(). Он копирует строку в скалярную переменную (в данном случае $__) и возвращает код результата, указывающий на успешное выполнение операции. Если метод getline () возвращает ложное значение, это свидетельствует о том, что достигнут конец файла и выполняется выход из цикла. В ином случае осуществляется проверка того, была ли получена полная строка, путем определения длины строки, возвращенной функцией getline (); если это так, удаляется последовательность символов обозначения конца строки и вызывается подпрограмма send_message () с текстом сообщения и новым порядковым номером.
Строки 33-37. Обработка сообщения в сокете. Подобным сообщением может быть, к примеру, информация со страницы http://vladimirskaya-rus.ru/news/?district_name=vladimir новости Владимира. Если сокет готов для чтения, значит, получен ответ с сервера. Для получения ответа вызывается метод recv () сокета и сообщение передается подпрограмме receive__message ().
Строки 39-41. Выполнение повторных попыток. Если массив @ready пуст, это значит, что произошел выход по тайм-ауту. Вызывается подпрограмма do_retries() для повторной передачи всех запросов, на которые не был получен ответ.
Строки 42-49. Подпрограмма send_message (). Эта подпрограмма отвечает за передачу на сервер запроса после получения уникального порядкового номера и текста запроса. С помощью описанного ранее простого формата создается сообщение и отправляется посредством функции send () на сервер.