Jump to content

CGI.pm: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Examples: HTML5 makes things simpler
m Added short description
Tags: Mobile edit Mobile app edit iOS app edit App description add
 
(14 intermediate revisions by 14 users not shown)
Line 1: Line 1:
{{Short description|Perl module for web applications}}
{{primary sources|date=September 2011}}
{{primary sources|date=September 2011}}
{{one source |date=April 2024}}
{{Infobox software
{{Infobox software
| name = CGI.pm
| name = CGI.pm
| logo =
| logo =
| screenshot =
| screenshot =
| caption =
| caption =
Line 15: Line 17:
| platform = [[Perl]]
| platform = [[Perl]]
| language =
| language =
| status =
| genre = [[Perl module]] for [[Common Gateway Interface|CGI]]
| genre = [[Perl module]] for [[Common Gateway Interface|CGI]]
| license =
| license =
Line 21: Line 22:
}}
}}


'''CGI.pm''' is a large and widely used [[Perl module]] for [[Computer programming|programming]] [[Common Gateway Interface]] (CGI) [[WWW|web]] applications, providing a consistent [[Application programming interface|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.<ref>https://metacpan.org/pod/distribution/CGI/lib/CGI.pod#HTML-Generation-functions-should-no-longer-be-used</ref> CGI.pm was a core perl module but has been removed as of v5.22 of perl.<ref>https://metacpan.org/pod/distribution/CGI/lib/CGI.pod#CGI.pm-HAS-BEEN-REMOVED-FROM-THE-PERL-CORE</ref> The module was written by [[Lincoln Stein]] and is now maintained by Lee Johnson.
'''CGI.pm''' is a large and once widely used [[Perl module]] for [[Computer programming|programming]] [[Common Gateway Interface]] (CGI) [[WWW|web]] applications, providing a consistent [[Application programming interface|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.<ref name="auto">{{Cite web|url=https://metacpan.org/dist/CGI/view/lib/CGI.pod|title=CGI - Handle Common Gateway Interface requests and responses - metacpan.org|website=metacpan.org}}</ref> CGI.pm was a core Perl module but has been removed as of v5.22 of Perl.<ref name="auto"/> The module was written by [[Lincoln Stein]] and is now maintained by Lee Johnson.


== Examples ==
== Examples ==
Here is a simple CGI page, written in Perl using CGI.pm (in [[Object-oriented programming|object-oriented]] style):
Here is a simple CGI page, written in Perl using CGI.pm (in [[Object-oriented programming|object-oriented]] style):


<source lang="perl">
<syntaxhighlight lang="perl">
#!/usr/bin/env perl
#!/usr/bin/env perl


Line 49: Line 50:
<form method="post" enctype="multipart/form-data">
<form method="post" enctype="multipart/form-data">
Name: <input type="text" name="name" /><br />
Name: <input type="text" name="name" /><br />
Age: <input type="text" name="age" /><p />
Age: <input type="text" name="age" /><p>
<input type="submit" name="Submit!" value="Submit!" />
<input type="submit" name="Submit!" value="Submit!" />
</form>
</form>
Line 64: Line 65:


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


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 CGI.pm's object-oriented abilities; it can also be done by calling functions directly, without the <tt>$cgi-></tt>, however the necessary functions must be imported into the namespace of the script that requires access to those functions:
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 CGI.pm's object-oriented abilities; it can also be done by calling functions directly, without the {{mono|$cgi->}}, however the necessary functions must be imported into the namespace of the script that requires access to those functions:


<source lang="perl">
<syntaxhighlight lang="perl">
#!perl
#!perl


Line 88: Line 89:


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


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.
Note: in many examples {{var|$q}}, short for query, is used to store a CGI object.


==See also==
==See also==
Line 99: Line 100:


==External links==
==External links==
{{Wikibooks|Perl Programming|CGI}}
*[https://metacpan.org/module/CGI CGI.pm] &ndash; at the [[CPAN]]
*[https://metacpan.org/module/CGI CGI.pm] &ndash; at the [[CPAN]]

{{Wikibooks|Perl Programming|CGI}}


[[Category:Perl modules]]
[[Category:Perl modules]]

Latest revision as of 02:53, 17 October 2024

CGI.pm
Original author(s)Lincoln Stein
Developer(s)Lee Johnson
Stable release
4.21 / 2015-06-22
PlatformPerl
TypePerl module for CGI
Websitemetacpan.org/release/CGI

CGI.pm is a large and once 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] CGI.pm was a core Perl module but has been removed as of v5.22 of Perl.[1] The module was written by Lincoln Stein and is now maintained by Lee Johnson.

Examples

[edit]

Here is a simple CGI page, written in Perl using CGI.pm (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>
<html>
    <head>
        <title>A Simple CGI Page</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
        <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!" />
        </form>
        <hr />
EndOfHTML

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 CGI.pm'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:

#!perl

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

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.

See also

[edit]

References

[edit]
  1. ^ a b "CGI - Handle Common Gateway Interface requests and responses - metacpan.org". metacpan.org.
[edit]