in reply to @CGI $q->upload() doesnt work properly
my $upload_Handle = $q->upload($filename);
Looks like you're specifying a file name here.
It should be the name of the respective file input field in the form, presumably
<input type="file" name="upload_file" />
just like you're already using it to get the file name via $q->param('upload_file').
my $filename = $q->param('upload_file'); # returns (client-side)
+name of the file
my $filehandle = $q->upload('upload_file'); # returns handle to the
+server-side temp file