in reply to forking large file uploads

STDOUT is buffered, try turning it off with $|++; before forking. $| (or $OUTPUT_AUTOFLUSH if you use English) when set to a non zero value forces a flush after every write. It affects the current default filehandle. See http://perldoc.perl.org/perlvar.html for more details.

Update: Sorry I just noticed that you did have $|++ at the top of your code, I guess I just skimmed the first few lines thinking it was the usual #!perl strict warnings stuff. Teach me to pay better attention;)