in reply to upload script

The scripts you posted works fine over here, no errors, so I take it your "ftp space" (whatever that means ;-) isn't the same as "$upload_dir"?

To simply test things, why not use some more debugging information, such as:

open (UPLOADFILE, ">$upload_dir/$filename") || die ("Can't open $uploa +d_dir/$filename: ".$!);
And print the path, just so you know where the stuff got stored:
print $query->header, $query->start_html, $query->h1("File got saved in $upload_dir/$filename"), $query->end_html;

Updated: minor markup ...

--
b10m