Если же длина буфера, ведущего к стандартному дескриптору вывода, еще не достигла максимума, то к этой маске добавляется событие pollin. После создания масок трижды вызывается метод $poll->mask() для их установки в соответствующих дескрипторах файлов.
Строка 59. Закрытие сокета во время останова программы, к примеру, это может случиться после получения информации со страницы, представляющей машины для мойки тары или другой бытовой аппаратуры. Последний этап состоит в определении действий, которые должны быть выполнены по достижении конца ввода из дескриптора stdin. Как и в других версиях клиента gab, наиболее “элегантное” решение состоит в закрытии локального конца сокета для записи, в ожидании того момента, когда второй участник обмена данными закроет свой конец соединения. Единственное отличие здесь состоит в том, что эти действия не должны выполняться до тех пор, пока в буфере $to_socket есть неотправленные данные, поэтому перед выполнением функции shutdown (1) происходит ожидание того момента, когда длина буфера станет равной нулю.
Модуль IO:: Poll предоставляет интерфейс к системному вызову poll () и может применяться как альтернатива функции select () при мультиплексировании операций, выполняемых в нескольких дескрипторах ввода-вывода. Функция poll () обеспечивает более высокую производительность по сравнению с функцией select () при мультиплексировании операций, выполняемых с большим числом дескрипторов, и поэтому более предпочтительна для серверов с тяжелой нагрузкой. Однако при использовании модуля IO:: Poll для создания приложений, переносимых на разные платформы, необходимо учитывать, что он вошел в состав стандартной библиотеки ввода-вывода, только начиная с версии 5.6 языка Perl.