Библиотека Log::Log4perl имеет довольно обширные возможности и позволяет настроить логирование под свои потребности.
Log::Dispatch::FileRotate позволяет ротировать файлы. Можно настроить максимальный размер файла (по умолчанию 10 Mb), максимальное число файлов.
use Log::Log4perl qw(get_logger);
sub logger {
my ($error, $log) = @_;
umask 0020;
my $config = '
log4perl.category = WARN, Logfile
log4perl.appender.Logfile = Log::Dispatch::FileRotate
log4perl.appender.Logfile.filename = test.log
log4perl.appender.Logfile.mode = append
log4perl.appender.Logfile.max = 10
log4perl.appender.Logfile.TZ = PST
log4perl.appender.Logfile.layout = \
Log::Log4perl::Layout::PatternLayout
log4perl.appender.Logfile.layout.ConversionPattern =%p:%C:%L - %d %m %n
';
Log::Log4perl->init(\$config);
my $logger = Log::Log4perl::get_logger();
$logger->error( $error );
}