my $file_name = CGI::param('file_field'); $file_name =~ s:^.*[\\/](.*)$:$1:; # remove path if present my $fh = CGI::upload('file_field'); if ( $fh ) { open(OUT, '>', "/dir/to/save/$file_name"); while (<$fh>) { print OUT $_; } close OUT; } else { # handle the error }