Эти атрибуты записываются в хеш, включенный в пространство имен модуля с помощью функции bless () наряду с отметкой времени регистрации пользователя и пустым анонимным массивом. В результате, этот массив будет содержать список каналов, к которым подключился пользователь.
После создания объекта пользователя вызывается метод send_event () объекта сервера для отправки пользователю сообщения login_ack с использованием метода send_event () с тремя параметрами, который обеспечивает доставку сообщения нужному клиенту. Подобным сообщением в канале может быть, например, информация про создание интернет сайта и его раскрутку. Затем новый объект вносится в хеши %nicknames и %addresses и возвращается вызывающей процедуре.
Оказалось, что для обеспечения правильной работы хеша % addresses необходимо применить небольшую подпрограмму. Дело в том, что иногда вызов recv () языка Perl возвращает упакованный адрес сокета, который содержит ненужные данные в неиспользуемых полях основополагающей структуры данных С. Эти данные игнорируются вызовом функции send () и отбрасываются при использовании функции sockaddr_in() для распаковки адреса с преобразованием в компоненты порта и IP-адреса.
Проблема возникает при определении того, равны ли два адреса, возвращенные функцией recv(), поскольку различия в ненужных данных могут заставить адреса выглядеть по-разному, тогда как в действительности они относятся к одному и тому же номеру порта и IP-адресу. Для устранения этой проблемы вызывается вспомогательная подпрограмма key (), которая преобразует упакованный адрес в достоверный ключ, содержащий номер порта и IP-адрес.