Библиотека 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 );
}