If possible I would use an existing utility for this, likely logrotate. If not then I would look to existing modules as they have probably done a reasonable amount of testing. At a glance Logfile::Rotate seems reasonable, but I don't have any personal experience with it.
There are a number of existing tools that can be used for logfile rotation (such as logrotate) and cleanup of old files (like tmpwatch). Those may or may not suit the purposes of the OP. If the requirement is to name the old log files based upon the date of the rotation, logrotate can accomplish that.
The problem with rolling your own log file rotation script, as with other system utilities is that you need to take other issues into account, such as making sure that removal of old files does not remove the wrong file (such as removing /etc/passwd when /var/log/messages is a symbolic link to it.) Does your rotation script need to rotate the logs when the disks are filling up? As imp said, the existing tools have been well-tested, whatever tool you write will also need to be tested carefully.