This message says "your script broke and it didn't send any HTTP headers before sending the error messages". Some suggestions for further investigation:
Check the error message that was written in your apache error log.
Switch off output buffering (set $| to a true value) to ensure that headers get out before your errors.
Put use CGI::Carp qw(fatalsToBrowser) to make debugging easier (but remove it before putting the script live).
Comment on Re: How to get over 'premature end of script headers' in Apache?