This is not a direct answer to your question, but I did find some problems with
Net::IRC.
I recently found that SlashNET presumes that a client is disconnected if it does not send PING messages at a regular pace. Net::IRC doesn't, and trying to fix it using do_one_loop made me discover that this function should be called from a package when working with use warnings;. I also had to hack the module to add support for the PONG answer message.
Flavio
perl -ple'$_=reverse' <<<ti.xittelop@oivalf
Don't fool yourself.