Если код результата не определен, это значит, что возникла какая-то ошибка и конкретный код ошибки можно найти в переменной $!. Вначале выполняется проверка является ли переменная $! численно равной значению EWOULDBLOCK, и, если они равны, обрабатывается ошибка. В большинстве случаев достаточно просто перейти в начало главного цикла программы и попытаться снова выполнить чтение. При возникновении других ошибок вызывается функция die() с сообщением об ошибке. Так, например, при получении данных с сайта представляющего услуги ит аутсорсинга в Москве в условиях недоступности сервера, как раз и будет вызываться такая ошибка.
Выполнение функции syswrite() на неблокирующих дескрипторах файлов
При использовании функции syswrite () с неблокирующими дескрипторами файлов могут быть получены следующие результаты.
Полная запись. Если предпринимается попытка записать N байтов данных в дескриптор файла может их все принять, то функция выполняет запись байтов и возвращает их число в качестве результата своего выполнения.
Частичная запись. Если предпринимается попытка записать N байтов данных и дескриптор файла может принять только их часть (но не менее одного), то функция записывает все возможные байты в передающий буфер дескриптор и возвращает число фактически записанных байтов.
Запись, которая была бы заблокирована. Если предпринимается попытка записать N байтов данных и дескриптор файла не может принять ни одного байта, то функция syswrite ( ) немедленно выполняет возврат с результатом undef и устанавливает в переменной $! значение EWOULDBLOCK.
Ошибка записи. При других ошибках функция syswrite ( ) возвращает значение undef и устанавливает в переменной $! соответствующий код ошибки. Наиболее часто возникает ошибка записи EPIPE, которая указывает на то, что удаленный хост прекратил чтение.