in reply to Can't find string terminator "ENDHEADER" anywhere before EOF

Another option is to change the delimeter to fit what you have instead of the other way around:

sub print_chat { print <<" ENDHEADER"; Content-type: text/html <html> <head><title>My Chat</title> </head> </html> ENDHEADER } return 1;

Also, wouldn't the return make more sense inside the sub?