That is a fragment of code that makes no sense in isolation, or at least, can't usefully be run in isolation. Here is a version with very minor changes to make the code look Perlish:
my $tmp_file_name = $_FILES{Filedata}{tmp_name};
my $ok = move_uploaded_file($tmp_file_name, '/path_to/new_filename');
print $ok ? "OK" : "FAIL";
which really doesn't get you any much further ahead I'm guessing because you don't know how the global "hash" %_FILES is populated (in PHP parlance it's an array, but PHP is a very confused language). You don't show the code for the sub move_uploaded_file and that is likely a less trivial conversion.
Added: Oh, and most hosts that provide Perl will also provide PHP. It's unusual not to have PHP available on a web server.
True laziness is hard work