read PROCESSING-A-FILE-UPLOAD and section Accessing the temp files directly.
If you use open to create the newfile there is no renaming required.
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use File::Copy;
use CGI::Carp 'fatalsToBrowser';
my $q = CGI->new;
my $photo = $q->param("pic");
my $result;
if ($photo){
my ($ext) = $photo =~ /([^.]+)$/;
my $copydir = '/full/path/to/web/img/';
my $newfile = $copydir."011190.$ext";
my $upload_fh = $q->upload("pic");
open OUTFILE,'>',$newfile or die "$!";
binmode OUTFILE;
while (<$upload_fh>){ # $upload_fh as filehandle
print OUTFILE;
}
close OUTFILE;
$result = "$photo written to $newfile";
# Alternative using copy
#my $tmpfile = $q->tmpFileName($upload_fh);
#if ( copy($tmpfile,$newfile) ){
# $result = "File $photo uploaded to $newfile.
# Temp file : $tmpfile";
#} else {
# $result = "ERROR copying $tmpfile to $newfile";
#}
}
print $q->header(),$q->start_html("Upload Test");
print << "HTM";
<h2>File upload</h2>
<div style="background-color:yellow">$result</div><br/>
<form method="post" action="" enctype="multipart/form-data">
Filename: <input type="file" name="pic"/><br/><br/>
<input type="submit"/>
</form>
HTM
print $q->end_html;
poj |