# man > CGI::Simple::Standard

---
type: CommandReference
command: CGI::Simple::Standard
mode: perldoc
section: 3pm
source: perldoc
---

## Quick Reference
- `use CGI::Simple::Standard qw( -autoload );` — automatically load functions on first use.
- `$value = param('foo');` — get/set CGI parameter values.
- `%fields = Vars();` — retrieve all parameters as a hash.
- `$filename = param('upload_file'); $fh = upload($filename);` — handle file uploads.
- `print header();` — output an HTTP header.
- `$cookie = cookie( -name => 'ID', -value => '123' ); print header( -cookie => $cookie );` — set a cookie.
- `print redirect('http://example.com');` — send an HTTP redirect.
- `$CGI::Simple::Standard::POST_MAX = -1; $CGI::Simple::Standard::DISABLE_UPLOADS = 0;` — configure upload limits.

## Name
CGI::Simple::Standard — a wrapper module for CGI::Simple that provides a function style interface

## Synopsis
perl
use CGI::Simple::Standard qw( -autoload );
use CGI::Simple::Standard qw( :core :cookie :header );

$CGI::Simple::Standard::POST_MAX = 1024;
$CGI::Simple::Standard::DISABLE_UPLOADS = 0;

$value = param('foo');
%fields = Vars();
$filename = param('upload_file');
$fh = upload($filename);
print header();
$cookie = cookie( -name=>'Password', -value=>'secret' );
print redirect('http://go.away.now');
## Configuration Variables
- `$CGI::Simple::Standard::POST_MAX` — maximum bytes accepted via POST (default 102400). Set to -1 for unlimited.
- `$CGI::Simple::Standard::DISABLE_UPLOADS` — set to 0 to enable uploads (default disables uploads).

## Import Methods
- **Autoloading:** `use CGI::Simple::Standard qw( -autoload );` installs an `AUTOLOAD` that creates a `CGI::Simple` object and dispatches missing functions to it. A fatal error occurs for undefined methods.
- **Specific function import:** `use CGI::Simple::Standard qw( param upload );` imports only the named functions.
- **Tag groups:** `use CGI::Simple::Standard qw( :core :header );` imports all functions in those groups (see below). Available groups: `:core`, `:misc`, `:cookie`, `:header`, `:push`, `:debug`, `:cgi-lib`, `:ssl`, `:access`, `:internal`, and aliases `:html`, `:standard`, `:cgi`, `:all`.
- You can mix `-autoload`, tag groups, and explicit names. If you need CGI.pm‑like defaults (infinite uploads, uploads enabled), add the `-default` pragma.

## Function Groups
- **`:core`** — `param`, `add_param`, `param_fetch`, `url_param`, `keywords`, `append`, `Delete`, `Delete_all`, `upload`, `query_string`, `parse_query_string`, `parse_keywordlist`, `Vars`, `save_parameters`, `restore_parameters`
- **`:misc`** — `url_decode`, `url_encode`, `escapeHTML`, `unescapeHTML`, `put`
- **`:cookie`** — `cookie`, `raw_cookie`
- **`:header`** — `header`, `cache`, `no_cache`, `redirect`
- **`:push`** — `multipart_init`, `multipart_start`, `multipart_end`, `multipart_final`
- **`:debug`** — `Dump`, `as_string`, `cgi_error`, `_cgi_object`
- **`:cgi-lib`** — `ReadParse`, `SplitParam`, `MethGet`, `MethPost`, `MyBaseUrl`, `MyURL`, `MyFullUrl`, `PrintHeader`, `HtmlTop`, `HtmlBot`, `PrintVariables`, `PrintEnv`, `CgiDie`, `CgiError`, `Vars`
- **`:access`** — `version`, `nph`, `all_parameters`, `charset`, `crlf`, `globals`, `auth_type`, `content_length`, `content_type`, `document_root`, `gateway_interface`, `path_translated`, `referer`, `remote_addr`, `remote_host`, `remote_ident`, `remote_user`, `request_method`, `script_name`, `server_name`, `server_port`, `server_protocol`, `server_software`, `user_name`, `user_agent`, `virtual_host`, `path_info`, `Accept`, `http`, `https`, `protocol`, `url`, `self_url`, `state`
- **`:ssl`** — `https`
- **`:internal`** — `_initialize_globals`, `_use_cgi_pm_global_settings`, `_store_globals`, `_reset_globals`

Aliased names to avoid conflicts: `$q->delete('foo')` → `Delete('foo')`, `$q->delete_all` → `Delete_all()` or `delete_all()`, `$q->save(\*FH)` → `save_parameters(\*FH)`, `$q->accept()` → `Accept()`. Use `restore_parameters()` instead of `new()` to create a new underlying object; it accepts the same arguments (`query string`, `hashref`, `filehandle`) and operates on the correct internal CGI::Simple object.

## Examples
**Parameter handling**
perl
use CGI::Simple::Standard qw( -autoload );
my @names   = param();               # all parameter names
my $first   = param('name');         # first value
my @all     = param('name');         # all values
param( 'name', 'new', 'values' );    # set new values
append( -name=>'name', -value=>'extra' );  # append value
Delete('name');                      # remove parameter
Delete_all();                        # remove all parameters
**File upload**
perl
$CGI::Simple::Standard::DISABLE_UPLOADS = 0;   # enable uploads
my $file = param('upload_file');               # filename
my $fh   = upload($file);                      # filehandle to read
while ( read($fh, $buffer, 1024) ) { ... }
# Or quick upload and save:
my $ok = upload( param('upload_file'), '/path/to/save.file' );
**Headers, cookies, redirect**
perl
print header();                                 # simple default header
print header( -type=>'image/gif', -expires=>'+24h', -cookie=>$cookie );
$cookie = cookie( -name=>'session', -value=>'abc', -expires=>'+1d' );
print redirect('http://other.site');
no_cache(1);  # set no-cache pragma
**Error handling**
perl
dienice( cgi_error() ) if cgi_error();
## See Also
- [CGI::Simple](http://localhost/phpMan.php/perldoc/CGI%3A%3ASimple/markdown) — the underlying object‑oriented module
- [CGI](https://metacpan.org/pod/CGI) — Lincoln Stein’s original CGI.pm module