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