Assuming that you're using some flavor of unix, your problem probably lies in the fact that the cgi is running as user "nobody", and most likely does not have permission to write to the directory. Depending on the directory that you're writing to I'd be careful about just chmod 777'ing it also. You may want to create a subdirectory just for the purpose of writing to from that cgi. Also, you could most likely just use open() to do this, which is the generally preferred method. sysopen() allows better control, but I'd assume that the permissions you're trying to give the file are the default anyway, so maybe just try:
open(FH, "> $myfile") || die "Can't open $file for write: $!";