in reply to using Net::IRC for actions

Actions are actually not part of the IRC protocol, but are CTCP events. Thus they aren't handled by your on_public handler. Instead, set a handler for the caction event. For more, see the docs for Net::IRC::Event.