in reply to Premature end of script headers (i know, i know...)

Hi ,

The print header; has something to do with writing to the STDOUT and using print FILEHANDLE ""; is something you do not to the STDOUT . Check for the file open status with some Carp(FatalsToBrowser) or through commandline execution
use CGI::Carp 'fatalsToBrowser'; open (FH , ">$data) || die "The file is not opened for processing + : $!";


The Carp method directs the errors to the webpage or just try running it through commandline option like showtheerrors.cgi NAME=VALUE but the Carp is a better way to do