From Wikipedia, the free encyclopedia
  (Redirected from Perl CGI)
Jump to: navigation, search
Original author(s) Lincoln Stein
Developer(s) Lee Johnson
Stable release 4.21 / 2015-06-22
Platform Perl
Type Perl module for CGI
Website is a large and widely used Perl module for programming Common Gateway Interface (CGI) web applications, providing a consistent API for receiving and processing user input. There are also functions for producing HTML or XHTML output, but these are now unmaintained and are to be avoided.[1] was a core perl module but has been removed as of v5.22 of perl.[2] The module was written by Lincoln Stein and is now maintained by Lee Johnson.


Here is a simple CGI page, written in Perl using (in object-oriented style):

#!/usr/bin/env perl

use strict;
use warnings;

use CGI;

my $cgi = CGI->new;

print $cgi->header('text/html');

print << "EndOfHTML";
<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<html xmlns="" lang="en-US" xml:lang="en-US">
        <title>A Simple CGI Page</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <h1>A Simple CGI Page</h1>
        <form method="post" enctype="multipart/form-data">
            Name: <input type="text" name="name"  /><br />
            Age: <input type="text" name="age"  /><p />
            <input type="submit" name="Submit!" value="Submit!" />
        <hr />

if ( my $name = $cgi->param('name') ) {
    print "Your name is $name.<br />";

if ( my $age = $cgi->param('age') ) {
    print "You are $age years old.";

print '</body></html>';

This would print a very simple webform, asking for your name and age, and after having been submitted, redisplaying the form with the name and age displayed below it. This sample makes use of's object-oriented abilities; it can also be done by calling functions directly, without the $cgi->, however the necessary functions must be imported into the namespace of the script that requires access to those functions:


use strict;
use warnings;
use CGI qw/ :standard /;

my $cgi = CGI->new;

print header('text/html');

# ... HTML output same as above example

if ( my $name = param('name') ) {
    print "Your name is $name.<br />";

if ( my $age = param('age') ) {
    print "You are $age years old.";

print '</body></html>';

Note: in many examples $q, short for query, is used to store a CGI object. As the above example illustrates, this might be very misleading.

See also[edit]


External links[edit]