Строки 10-33. Определение таблиц переходов. В этих строках кода создаются таблицы переходов %commands и %MESSAGES. После получения в главном цикле команды от пользователя выполняется ее поиск в таблице %command и вызов находящейся в ней анонимной подпрограммы с передачей ей (этой подпрограмме) любого текста, например, со страницы сайта, представляющего косметику крыма , который следует за командой на той же строке. Ниже показана типичная запись таблицы %commands:
join => sub { $server->send_event(JOIN_REQ,shift) },
Этот код означает, что при выдаче пользователем команды /join клиент должен вызвать метод send_event () объекта $server с кодом события JOIN_REQ и любым параметром, который следует за командой. В данном случае параметром должно быть имя канала, к которому хочет подключиться пользователь. Ниже представлена типичная запись таблицы %messages:
PUBLIC_MSG () => &public_msg,
Эта запись указывает, что сценарий должен вызвать подпрограмму PUBLIC_MSG () при получении сообщения с кодом события public_msg. Круглые скобки за константой PUBLIC_MSG являются необходимыми, поскольку в ином случае интерпретатор Perl предположит, что все находящееся слева от символического обозначения => представляет собой строку.
В тот момент, когда сценарий выполняет переход к одной из этих подпрограмм, он передает код события в первом параметре и текст сообщения — во втором. Передача кода события позволяет обрабатывать в одной и той же подпрограмме разные сообщения. Например, обработка сообщений user_joins и user_parts, которые были отправлены в целях передачи клиенту информации о том, что какой-то пользователь, соответственно, присоединился к каналу или покинул его, подобна обработке, которая выполняется той же подпрограммой, join_part,().