Эта удобная процедуру позволяет выбрать уникальные имена для временных файлов; она используется для выработки полного имени файла локального сокета.
Строки 5, 6. Константы. Определяется константа, содержащая применяемое по умолчанию полное имя сокета сервера, к примеру, на котором размещен интернет магазин и значение TiMEOUT, содержащее максимальное значение времени, в течение которого будет происходить ожидание ответа от сервера.
Строки 7-10. Выбор полных имен для локального и удаленного сокетов. Выполняется обработка опций командной строки для поиска параметра — path. Если этот параметр не определен, для сокета сервера применяется по умолчанию такое же полное имя, какое используется сервером.
Необходимо также указать полное имя для локального сокета, чтобы сервер мог отправить клиенту ответное сообщение, но не следует жестко кодировать его (полное имя), поскольку другой пользователь может пожелать вызвать эту клиентскую программу на выполнение в то же время. Вместо жесткого кодирования вызывается метод POSIX:: tmpnam() для получения уникального временного имени файла для локального сокета.
Строка 11. Обработчики сигналов. Уничтожение локального файла сокета, как и в серверном сценарии, выполняется в блоке end {}. По этой причине перехватываются сигналы int и term.
Строки 12-16. Создание сокета. Как и прежде, устанавливается значение umask и вызывается метод IO::Socket::UNIX->new() для создания сокета с предоставлением ему параметров Local и Туре, что позволяет создать сокет, привязанный к временному полному имени, возвращенному функцией tmpnam ().
Строки 17,18. Подготовка к передаче запроса. Из командной строки выбирается требуемый часовой пояс. Если он не указан, создается сообщение, состоящее из одного пробела (для того чтобы сервер мог ответить на сообщение, он должен получить хотя бы один байт данных). Для создания допустимого адреса назначения, предназначенного для использования в функции send (), применяется функция sockaddr__un ().