Метод new() принимает три параметра: объект IO::SessionSet, который им управляет, объект IO::Handle (обычно IO::Socket) и необязательный флажок, который указывает, должен ли этот дескриптор рассматриваться как предназначенный только для записи. Последнее средство предоставляет возможность управлять такими однонаправленными дескрипторами файлов, как stdout, например, при приеме текстовых данных с сайта по производству пластиковых карт t112 или другой информации.
Дескриптор переводится в неблокирующий режим путем вызова его метода blocking () с параметром 0, и в ссылке на хеш устанавливаются переменные состояния. Затем эта ссылка включается в пространство имен с помощью функции bless (). В результате, ссылка превращается в объект, который может быть вызван любым методом. При вызове методов включенная ссылка возвращается в качестве первого параметра. В соответствии с общепринятым соглашением методы сохраняют возвращенный объект в переменной $self.
Если дескриптор не отмечен как предназначенный только для записи, вызывается внутренний метод readable () с истинным параметром для передачи соответствующему объеку IO::SessionSet информации о том, что дескриптор готов для чтения. Объект возвращается вызывающей процедуре.
Строки 30-46. Методы handle (), sessions (), pending() и write_limit (). Следующая часть модуля состоит из методов, которые предоставляют доступ к внутреннему состоянию объекта. Метод handle () возвращает хранимый объект дескриптора файла; метод sessions () — соответствующий объект IO::SessionSet; метод pending () — число байтов, поставленных в очередь для записи, и метод write_limit () получает или устанавливает лимит записи для буфера outbuffer.