Строки 10-12. Чтение текстовых строк и отправка их на сервер. Для чтения всех строк, к примеру, информации о ценах на мобильные телефоны в Украине со страницы http://technoportal.ua/mobile.html или любого другого источника, из дескриптора stdin и/или списка, указанного параметром командной строки, в массиве @lines применяется оператор <>, после чего эти строки отправляются через сокет на сервер. Затем вызывается функция shutdown (1) для закрытия половины сокета, предназначенной для записи, и уведомления сервера о том, что у клиента нет больше данных для отправки.
Строка 13. Вывод результатов. Из сокета считываются переформатированные строки и выводятся на стандартное устройство вывода stdout.
Применение сокетов домена UNIX для передачи дейтаграмм
Сокеты домена UNIX могут применяться для отправки и приема дейтаграмм. При создании (или принятии значений модуля IO::Socket::UNIX, предусмотренных по умолчанию) сокет, вместо указания типа SOCK_STREAM, создается с типом SOCK_DGRAM. После этого появляется возможность передавать через сокет сообщения с помощью функций send () и recv (), не устанавливая долгосрочных соединений.
Поскольку сокеты домена UNIX являются локальными для хоста, существуют некоторые важные различия между применением сокетов домена UNIX для локальной отправки дейтаграмм и использованием протокола UDP для отправки дейтаграмм по сети. Преимуществом дейтаграмм домена UNIX является то, что они надежны и упорядочены. В отличие от протокола UDP, можно вполне рассчитывать на то, что дейтаграммы домена UNIX достигнут места назначения и поступят в таком же порядке, в каком они были отправлены. Их недостаток в том, что двухсторонняя связь возможна, только если оба процесса выполнят привязку к полному имени с помощью функции bind (). Если это не будет предусмотрено в клиенте, то он сможет отправлять сообщения на сервер, но сервер не получит адрес другого участника соединения, который может применяться для отправки ответа.
Для иллюстрации особенностей применения дейтаграмм в сокетах домена UNIX ниже показан простой вариант сервера службы времени.