in reply to Log rotating filter.

Get Log::Dispatch::FileRotate from CPAN and you're all set:
use Log::Dispatch::FileRotate; my $file = Log::Dispatch::FileRotate->new( name => 'my_rotator', min_level => 'info', filename => 'somefile.log', mode => 'append' , size => 1024*1024, max => 6); while(<>) { $file->log(level => 'info', message => $_); }
This keeps writing to somefile.log until it's 1MB. Then it will roll it over to somefile.log.1 and continue writing to a new somefile.log -- all transaction-safe. The 'max' parameter specifies the maximum number of rolled-over log files that you want to keep around this way until it starts throwing them away to avoid filling up the disc. It can also perform time-based rollovers (e.g. at midnight).

This should get you what you need -- but another thought: if you wanted to do it the Right Way (tm), (and you had the luxury of being able to modify your web application) you'd have your application not write to STDOUT, but use something like Log::Log4perl -- this way you could configure any type of log destination just by modifying a configuration file: rotating appenders, database appenders, email appenders, you name it.