in reply to Forking with a socket

In your last line, you return to the caller in the child process. That leaves the child continuing with a copy of the remaining parent code. Change to

while ($self->event_loop()) { } exit 0;

After Compline,
Zaxo