Строки 4, 5. Выборка IP-адреса и номера порта. Адрес и номер порта берутся из командной строки. Если они не заданы, применяются по умолчанию жестко закодированный широковещательный адрес и порт службы эхо-повтора UDP. В следующем разделе показано, как определить соответствующий широковещательный адрес автоматически.
Строки 6-8. Создание сокета UDP и обеспечение широковещательной рассылки. Вызывается метод IO::Socket::INET->new() для создания нового сокета протокола UDP. Никакие иные параметры не нужны. Затем операционной системе отправляется извещение о том, что данный сокет будет применяться для широковещательной рассылки путем установки его метода sockopt () с опцией so_broadcast, установленной равной истинному значению.
В последней строке этого фрагмента кода создается упакованный адрес назначения, исходя из номера порта и широковещательного адреса.
Строки 9-16. Вызов в цикле метода объекта IO::Select. Основой этого фрагмента кода является цикл проверки готовности к вводу сокета и дескриптора stdin, которые входят в набор дескрипторов объекта IO::Select. При каждом проходе по циклу вызывается подпрограмма do_stdin(), если готовы для чтения данные, введенные пользователем, и подпрограмма do_socket (), если в сокет поступило сообщение, готовое для приема.
Строки 17-21. Широковещательная рассылка через сокет данных, введенных пользователем. Подпрограмма do_stdin() считывает данные из дескриптора stdin и обеспечивает завершение работы сценария при обнаружении признака конца файла или других ошибок. Затем эти данные отправляются по упакованному широковещательному адресу, созданному в строке 8.