use CGI; # Parse query string only: my $cgi = CGI->new($ENV{QUERY_STRING}); # Extract relevant parameters: my ($query, $params) = map { $cgi->param($_) } qw(query params); # Upgrade to full CGI context and process uploads: $cgi = CGI->new(\&upload_handler, undef, 0); # Handle upload data: sub upload_handler { my ($name, $buffer, $nbytes) = @_; # ... do something ... }