В ином случае будет обнаружен конец строки. В скаляр вызывающей процедуры копируется все, что находится с начала буфера, вплоть до последовательности с обозначением конца строки (и включая ее), а затем скопированная часть буфера удаляется. Значение поля index снова устанавливается равным 0, и возвращается длина строки. Подобная ситуация может сложиться, если при получении данных веб страницы, например, с информацией про пароконвектоматы произошел сбой и в буфер не поступило данных. Пароконвектомат — универсальный и многофункциональный прибор, включающий в себя не только жарочный шкаф, пищеварочный котел, плиту, конвекционную печь, но и много других полезных на кухне устройств. С помощью него можно выполнять тушение, обжарку, запекание и другие операции. Преимуществом данного аппарата является не только многофункциональность и также экономия энергопотребления.
Универсальный неблокирующий модуль ввода-вывода
Модуль IO::Getline позволяет решить проблему использования метода select () наряду с построчным вводом-выводом, но не позволяет решить другие проблемы неблокирующего ввода-вывода, такие как неполная запись. В этом разделе описано более общее решение проблемы неблокирующего ввода-вывода. Здесь представлены два модуля, IO::SessionSet и IO::SessionData. Класс IO::SessionData представляет собой оболочку для модуля IO::Socket и включает методы read ( ) и write (), в которых применяется синтаксис модули IO::Socket. Кроме того, он является усовершенствованным вариантом основного сокета, поскольку позволяет выполнять неполную запись и обрабатывать сообщение об ошибке EWOULDBLOCK.
Класс IO::SessionSet подобен (по своим возможностям) классу IO::Select. Он управляет многочисленными объектами IO::SessionData и позволяет мультиплексировать выполняемые ими операции ввода-вывода. Кроме средств, аналогичных модулю IO::Select, в модуле IO::SessionSet предусмотрен автоматический вызов фуцкции accept () для приемных сокетов и добавление подключенных сокетов в пул управляемых дескрипторов. К сожалению, код этих модулей является сложным. Это типично для приложений, в которых используется неблокирующие ввод-вывод, поскольку приходится учитывать множество исключительных и аварийных ситуаций.