En Perl no es directo la creación de temporizadores.
Hay infraestructuras, como la de
POE, por ejemplo, que permite un uso asíncrono del código, y con algunas posibilidades de crear esos temporizadores.
Otra forma, un poco más burda, sería que el programa generara un hijo por medio de un fork(), y que esté hijo lo único que hiciera fuera esperar (sleep) un cierto tiempo, sacar el mensaje al canal, y luego morir.
Estoy casi convencido que los módulos especializados en IRC, en el CPAN, tienen mejores formas de hacer esto.
Por ejemplo, el módulo
Bot::BasicBot tiene la función schedule_tick(), que llamará a la función tick() pasado el tiempo indicado. Lo malo es que solo se puede indicar un periodo de tiempo.
También tiene la función forkit(), para hacer lo comentado antes.