use CGI; use CGI::Carp qw ( fatalsToBrowser ); use File::Basename; my $upload_dir = "upload/"; my $query = new CGI; my $filename = $query->param("file"); my $upload_filehandle = $query->upload("file"); my $ext = "jpg"; # this can be dynamic based on checking what kind of file it is my $newname = "edddd.$ext"; my $fileto = rename($filename, $newname); open ( my $UPLOADFILE, ">", $upload_dir/$fileto" ) or die "$!"; binmode $UPLOADFILE; while ( <$upload_filehandle> ) { print $UPLOADFILE; }