my $upload_dir = "/home/yadayada/public_html/cgi-bin/upload_docs"; my ($base_filename, $untainted_filename); my @full_filename = ("", "", ""); my @upload_file = ($file1, $file2, $file3); my $upload_file = param(@upload_file); my $y=0; foreach $upload_file(@upload_file) { if ($upload_file eq "") {} else { $base_filename = $upload_file; $base_filename =~ s/.*[\/\\](.*)/$1/; $untainted_filename = $base_filename; if ($base_filename =~ /^([-\@:\/\\\w.]+)$/ ) { $untainted_filename = $1; } else { die <<"EOT"; Unsuported characters in the filename "$base_filename". Your filename may only contain alphabetic characters, numbers, and the characters '_', '-', '\@', '/', '\\', and '.' EOT } if ($untainted_filename =~ m/\.\./ ) { die <<"EOT"; Your upload filename may not contain the sequence '..' Rename your file so that it does not contain the sequence '..', and try again. EOT } else {} @full_filename[$y] = $upload_dir . "/" . $untainted_filename; open (UPLOADFILE, ">@full_filename[$y]") || die ("Can't open (@full_filename[$y]): $!"); # open $file_name using FILEHANDLE INFILE binmode UPLOADFILE; # allow FILEHANDLE read in binary mode while ( <$upload_file> ) { print UPLOADFILE; } close (UPLOADFILE); # close input file } $y++; }