I agree with
Forsaken. Just do something like the following:
use strict;
use warnings;
my $fname = 'myfile';
my $limit = 50 * 1024;
my ($size, $fc, $handle, $printstr) = (0, 1);
open ($handle, ">$fname$fc");
for (1..100) {
$printstr = '-'x1000 . "\n";
if ($limit < $size + length($printstr)) {
close($handle);
$size = 0; $fc++;
open ($handle, ">$fname$fc");
}
print $handle $printstr;
$size += length($printstr);
}
close($handle);
If you have control over your prints, you also have the ability to check the lengths of the strings you're printing, which you can then use to keep track of how large the file is.
Of course, you'll need to do (one) initial stat if you begin by appending to an existing file.