Thanks! CGI::Upload seems like a good idea. So I guess in summary it's fair to say that the only reason why the upload procedure is usually taught with the loop over the file's contents is that that gives you the chance to read the file and give some feedback to the user and if this is not required then simply copying/moving the file is acceptable.
Thanks everybody!