Дополнительным стимулом к использованию функции poll () является ее API-интерфейс, который во многих отношениях более привлекателен, нежели API-интерфейс функции select () и может применяться на любых серверах, например, на хосте содержащим сайт про ремонт ноутбуков http://kabanchik.com.ua/tasks/index/99 . Программисты Perl могут получить доступ к функции poll () только через ее объектно-ориентированный интерфейс, модуль IO::Роll. Он был введен во время разработки версии 5.6 языка Perl. Необходимо убедиться в том, что применяемый модуь IO:: Poll имеет версию 0.04 или последующую, поскольку предыдущие версии не были полностью работоспособными.
Применение модуля IO::Poll
Модуль IO::Poll немного напоминает модуль IO::Select, однако он предусматривает выполнение прямо противоположных действий. При использовании API-интерфейса IO::Select создается несколько наборов IO::Select (обычно по одному для операций чтения и записи) и контролируется их состояние с помощью вызова метода IO::Select->select (). При использовании модуля IO::Poll создается единственный объект IO::Poll, и к нему по одному добавляются дескрипторы файлов с масками, которые обозначают контролируемые состояния. После этого вызывается метод poll () объекта IO::Poll, который блокируется до тех пор, пока не возникнет одно или несколько таких состояний. После возврата управления методу poll () объект опрашивается для получения списка затронутых дескрипторов.
Типичная программа начинается примерно так:
use IO::Poll qw(POLLIN POLLOUT POLLHUP);
В этом фрагменте кода загружается модуль IO:: Poll и вводятся три константы POLL IN, POLLOUT и POLLHUP. Эти константы применяются для формирования маски, которая указывает, какие состояния дескрипторов файлов должны контролироваться.