Okay, it was just a thought (kind of thing I'd goof up). I played with sysopen a little (not use-ing anything at all) and this worked okay (I shifted $file from the command line, and it was simply sheep.txt):
sysopen(FH, $file, O_WRONLY | O_TRUNC | O_CREAT);
print FH "Whooyah";
It did write Whooyah to the file, so it worked all right.
So maybe the trouble is in the $file string you're giving it, after all.