4) Обработка данных в сокете. Если имеются данные, предназначенные для чтения из подключенного сокета, то вызывается функция sysread () для чтения, вплоть до 2 Кбайт, данных из этого сокета. Если операция чтения выполнена успешно, данные сразу же выводятся в дескриптор stdout. В ином случае можно сделать вывод, что удаленный хост закрыл соединение, поэтому выводится сообщение об этом и работа программы прекращается.
Сценарий gab5.pl можно использовать для работы с различными сетевыми серверами, включая и те, которые ориентированы на обработку строк, например, веб страниц предлагающих продвижение сайтов Одесса и те, которые вырабатывают менее предсказуемые выходные данные. Поскольку этот сценарий не основан ни на мультипроцессных, ни на многопоточных методах, он работает фактически на всех операционных системах, для которых предусмотрена версия Perl, включая Macintosh.
Модуль IO::Select.
И поставку Perl, начиная еще с версии 5.003, входит объектно-ориентированный класс оболочки IO::Select. Создается объект IO::Select, к нему добавляются дескрипторы, которые необходимо контролировать, а затем вызываются методы can_read (), can_write () или has_exception для ожидания готовности одного или нескольких дескрипторов этого объекта к вводу-выводу.
$select = IO::Select->new ([@handles])
Для создания нового объекта IO::Select применяется метод new() класса IO::Select. Он может быть вызван со списком дескрипторов, которые в этом случае будут добавлены к списку, контролируемому модулем IO::Select, или с пустым списком параметров— в этом случае контролируемый набор вначале будет пуст.
Список дескрипторов может состоять из дескрипторов файлов любого типа, включая объекты IO::Handle, шаблоны типа и ссылки на шаблоны типа. Можно также добавлять и удалять дескрипторы после создания объекта.