use CGI;
my $query = CGI->new();
&_upload_file($query->param('my_upload_field'));
####
use CGI;
my $query = CGI->new();
my $uploaded_filehandle = $query->upload('my_upload_field')
or print_error_page("Sorry, you must upload a file...");
&_upload_file( $uploaded_filehandle );
####
use CGI;
use File::Copy;
## in main...
my $query = CGI->new();
my $uploaded_filehandle = $query->upload('my_upload_field')
or print_error_page("Sorry, you must upload a file...");
my $filename = $query->param('my_upload_field');
&_upload_file( $uploaded_filehandle, $filename );
sub _upload_file {
my ($uploaded_fh, $orig_filename) = @_;
my $dest_filename = $orig_filename;
$dest_filename =~ s{ ^.* ( \\ | \/ ) }{}x;
copy($uploaded_fh, $dest_filename) or die "Couldn't copy file to '$dest_filename': $!; stopped";
}
####
use CGI::Carp 'fatalsToBrowser';