Tienes que jugar con la función localtime y el módulo time::local...tomas un punto como referencia de tiempo y luego vas sumando y restando los segundos que equivalgan a los días, horas y demás...
También te invito a que busques la palabra calendar en
www.search.cpan.org
Saludos