# I'll use psuedo-code since you did :^) while (my $line=<>) { print LOG $line; if ( ++$linenumber == 90% of max ) { LOG == LOG1 ? open LOG2 : open LOG1 } if ( $linenumber == max ) { LOG == LOG1 ? LOG = LOG2 : LOG = LOG1 LOG == LOG1 ? close LOG2 : close LOG1 LOG == LOG1 ? rename(LOG2) : rename(LOG1) $linenumber = 0 } }