in reply to Deleting on Files

If you want to change the contents of a file, you'll have to open it in read/write mode. That's '+<', plain '<' won't do.

And when that is changed, you can use truncate on the handle.

Untested:

open FILE, '+<', $filename; truncate FILE, 5*1024*1024 if -s FILE > 5*1024*1024; close FILE;

But, I'm not convinced that this is the best approach to solve your problem: in general, log files are appended to, at the end, and if you shorten the file you'll remove the latest endtries. People usually want to delete the older entries — but you can't do that without rewriting the entire file.

Perhaps you should look into rotating your log files instead?