sub upload { read (STDIN, $in, $ENV{'CONTENT_LENGTH'}); @pairs = split (/&/, $in); foreach $pair (@pairs) { ($name, $value) = split (/=/, $pair); $name =~ s/\+/ /g; $name =~ s/%(..)/pack("C", hex($1))/ge; $value =~ s/\+/ /g; $value =~ s/%(..)/pack("C", hex($1))/ge; $value =~s///g; if ($parse{$name}) { $parse{$name} .= ", $value"; } else { $parse{$name} = $value; } } my $cgi = CGI->new; my $upload = CGI::Upload->new( $cgi ); if ( $upload->mime_type('upload') eq 'image/gif' ) { my $buffer; my @results; my $fh = $upload->file_handle('upload'); while (read($fh, $buffer, 45)) { push (@results, pack("u", $buffer)); } open (FILE, "+>>$parse{directory}/$upload->file_name('upload')") or die "Can't open image file: $!"; for $line (@results) { print FILE "$line"; } close (FILE) or die "Can't close image file: $!"; $fh->close; } filemgr($parse{directory}); # Print directory tree }