Código:
#!/usr/bin/perl -w
use CGI;
$upload_dir = "/home/mywebsite/htdocs/upload";
$query = new CGI;
$filename = $query->param("photo"); $email_address = $query->param("email_address"); $filename =~ s/.*[\/\\](.*)/$1/; $upload_filehandle = $query->param ("photo");
open UPLOADFILE, ">$upload_dir/$filename";
while ( <$upload_filehandle> ) { print UPLOADFILE; }
close UPLOADFILE;
print $query->header ( ); print <<END_HTML;
<HTML> <HEAD> <TITLE>Thanks!</TITLE> </HEAD>
<BODY>
<P>Thanks for uploading your photo!</P> <P>Your email address: $email_address</P> <P>Your photo:</P> <img src="/upload/$filename" border="0">
</BODY> </HTML>
END_HTML
;
no existe el metodo upload en el package CGI, no se de donde lo sacaron. Además, el param si es un archivo el parametro no es solo los datos sino un filehandle.
Deja bastante que desear el script, te recomendaría que busques alguno mejor, o -mejor aún- que te hagas uno a tu medida ;)