Phoinix оба.
исходщя из последних веяний в perl я могу сказать что open нужно вызывать с тремя параметрами а не с двумя: open (FH, ">" , "$filename") и не забывать обработать ошибку на открытии. дело в том, что если $filename будет иметь в своем названии управляющие символы, ты получишь не то что тебе нужно:
$filename = \'>file\';
open (FH, ">$filename")
Поблочная запись в файл нужна в редких случаях, а отработать ситуацию с неверным размером файла можно после записи его.