<!DOCTYPE html><html><head><meta charset="utf-8"/><meta property="mw:pageId" content="1343786"/><meta property="mw:pageNamespace" content="0"/><link rel="dc:replaces" resource="mwr:revision/1329244525"/><meta property="mw:revisionSHA1" content="50b513dc1a5e77ec772e1a9a8fae1604324064d6"/><meta property="dc:modified" content="2025-12-24T19:23:12.000Z"/><meta property="mw:htmlVersion" content="2.8.0"/><meta property="mw:html:version" content="2.8.0"/><title>CGI.pm - WikiMili, The Best Wikipedia Reader</title><meta property="mw:generalModules" content="ext.pygments.view|ext.cite.ux-enhancements"/><meta property="mw:moduleStyles" content="ext.pygments|ext.cite.parsoid.styles|ext.cite.styles"/><meta href="/w/load.php?lang=en&amp;modules=ext.pygments%7Cext.cite.parsoid.styles%7Cext.cite.styles%7Cmediawiki.skinning.content.parsoid%7Cmediawiki.skinning.interface%7Csite.styles&amp;only=styles&amp;skin=vector"/><meta http-equiv="content-language" content="en"/><meta http-equiv="vary" content="Accept"/><link rel="canonical" href="https://wikimili.com/en/CGI.pm"/><link rel="stylesheet" href="/a.css"/><meta name="YahooSeeker" content="INDEX, FOLLOW"/><meta name="msnbot" content="INDEX, FOLLOW"/><meta name="googlebot" content="INDEX, FOLLOW"/><meta name="robots" content="index, follow"/><meta name="viewport" content="width=device-width"><meta property="og:type" content="article"/><meta property="og:site_name" content="WikiMili.com"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:domain" content="WikiMili.com"/><meta name="twitter:site" content="@wikimili"/><meta name="description" content="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. C"/><meta property="og:description" content="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. C"/><meta name="twitter:description" content="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. C"/><meta property="og:title" content="CGI.pm - WikiMili, The Best Wikipedia Reader"/><meta name="twitter:title" content="CGI.pm - WikiMili, The Best Wikipedia Reader"/><meta property="og:url" content="https://wikimili.com/en/CGI.pm"/><meta name="twitter:url" content="https://wikimili.com/en/CGI.pm"/><script type="text/javascript" src="/a.js"></script></head><body lang="en" class="mw-content-ltr sitedir-ltr ltr mw-body-content parsoid-body mediawiki mw-parser-output" dir="ltr" data-mw-parsoid-version="0.23.0.0-alpha9" data-mw-html-version="2.8.0" id="mwAA"><div id="header"> <a id="miliLogo" href="https://wikimili.com">WikiMili</a> </div><h1 id="firstHeading" class="firstHeading" lang="en">CGI.pm</h1><span class="updated-holder">Last updated <time class="updated" datetime="2025-12-25">December 25, 2025</time></span><section data-mw-section-id="0" id="mwAQ"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none" about="#mwt1"  data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;Short description&quot;,&quot;href&quot;:&quot;./Template:Short_description&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;Perl module for web applications&quot;}},&quot;i&quot;:0}}]}" id="mwAg">Perl module for web applications<link rel="mw:PageProp/Category" target="_blank" href="//en.wikipedia.org/wiki/Category:Articles_with_short_description"/><link rel="mw:PageProp/Category" target="_blank" href="//en.wikipedia.org/wiki/Category:Short_description_is_different_from_Wikidata"/></div><style data-mw-deduplicate="TemplateStyles:r1305433154" typeof="mw:Extension/templatestyles mw:Transclusion" about="#mwt2" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Module:Message box/ambox.css&quot},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot},&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;primary sources&quot;,&quot;href&quot;:&quot;./Template:Primary_sources&quot},&quot;params&quot;:{&quot;date&quot;:{&quot;wt&quot;:&quot;September 2011&quot}},&quot;i&quot;:0}}]}" id="mwAw">.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}</style><table class="box-Primary_sources plainlinks metadata ambox ambox-content ambox-Primary_sources" role="presentation" about="#mwt2"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"> <a onclick="showImg(this)" id="Question_book-new.svg" class="mw-file-description"><img alt="Question book-new.svg" resource="./File:Question_book-new.svg" src="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/60px-Question_book-new.svg.png" decoding="async" data-file-width="512" data-file-height="399" data-file-type="drawing" height="39" width="50" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/120px-Question_book-new.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/120px-Question_book-new.svg.png 2x" class="mw-file-element"/></a> </span></div></td><td class="mbox-text"><div class="mbox-text-span">This article <b>relies excessively on <a rel="mw:WikiLink" target="_blank" href="//en.wikipedia.org/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability">references</a> to <a rel="mw:WikiLink" target="_blank" href="//en.wikipedia.org/wiki/Wikipedia:No_original_research#Primary,_secondary_and_tertiary_sources" title="Wikipedia:No original research">primary sources</a> </b>.<span class="hide-when-compact"> Please improve this article by adding <a rel="mw:WikiLink" target="_blank" href="//en.wikipedia.org/wiki/Wikipedia:No_original_research#Primary,_secondary_and_tertiary_sources" title="Wikipedia:No original research">secondary or tertiary sources</a>. <br/><small><span class="plainlinks"><i>Find sources:</i><span typeof="mw:Entity">&#160;</span> <a rel="mw:ExtLink nofollow" href="https://www.google.com/search?as_eq=wikipedia&amp;q=%22CGI.pm%22" class="external text">"CGI.pm"</a> <span typeof="mw:Entity">&#160;</span>&#8211;<span typeof="mw:Entity">&#160;</span> <a rel="mw:ExtLink nofollow" href="https://www.google.com/search?tbm=nws&amp;q=%22CGI.pm%22+-wikipedia&amp;tbs=ar:1" class="external text">news</a>&#160;<b>&#183;</b> <a rel="mw:ExtLink nofollow" href="https://www.google.com/search?&amp;q=%22CGI.pm%22&amp;tbs=bkt:s&amp;tbm=bks" class="external text">newspapers</a>&#160;<b>&#183;</b> <a rel="mw:ExtLink nofollow" href="https://www.google.com/search?tbs=bks:1&amp;q=%22CGI.pm%22+-wikipedia" class="external text">books</a>&#160;<b>&#183;</b> <a rel="mw:ExtLink nofollow" href="https://scholar.google.com/scholar?q=%22CGI.pm%22" class="external text">scholar</a>&#160;<b>&#183;</b> <a rel="mw:ExtLink nofollow" href="https://www.jstor.org/action/doBasicSearch?Query=%22CGI.pm%22&amp;acc=on&amp;wc=on" class="external text">JSTOR</a> </span></small></span><span class="date-container"><i>(<span class="date">September 2011</span>)</i></span><span class="hide-when-compact"><i> (<small> <a rel="mw:WikiLink" class="new" data-href="//en.wikipedia.org/wiki/Help:Maintenance_template_removal" title="Help:Maintenance template removal">Learn how and when to remove this message</a> </small>)</i></span></div></td></tr></tbody></table><link rel="mw:PageProp/Category" target="_blank" href="//en.wikipedia.org/wiki/Category:Articles_lacking_reliable_references_from_September_2011" about="#mwt2"/><link rel="mw:PageProp/Category" target="_blank" href="//en.wikipedia.org/wiki/Category:All_articles_lacking_reliable_references" about="#mwt2" id="mwBA"/><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1305433154" about="#mwt4" typeof="mw:Extension/templatestyles mw:Transclusion" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Module:Message box/ambox.css&quot;},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot;},&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;one source &quot;,&quot;href&quot;:&quot;./Template:One_source&quot;},&quot;params&quot;:{&quot;date&quot;:{&quot;wt&quot;:&quot;April 2024&quot;}},&quot;i&quot;:0}}]}" id="mwBQ"/><table class="box-One_source plainlinks metadata ambox ambox-content ambox-one_source" role="presentation" about="#mwt4"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"> <a onclick="showImg(this)" id="Question_book-new.svg" class="mw-file-description"><img alt="Question book-new.svg" resource="./File:Question_book-new.svg" src="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/60px-Question_book-new.svg.png" decoding="async" data-file-width="512" data-file-height="399" data-file-type="drawing" height="39" width="50" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/120px-Question_book-new.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/120px-Question_book-new.svg.png 2x" class="mw-file-element"/></a> </span></div></td><td class="mbox-text"><div class="mbox-text-span">This article <b>relies largely or entirely on a <a rel="mw:WikiLink" target="_blank" href="//en.wikipedia.org/wiki/Wikipedia:Articles_with_a_single_source" title="Wikipedia:Articles with a single source">single source</a> </b>.<span class="hide-when-compact"> Relevant discussion may be found on the <a rel="mw:WikiLink" class="new" data-href="//en.wikipedia.org/wiki/Talk:CGI.pm" title="Talk:CGI.pm">talk page</a>. Please help <a rel="mw:ExtLink" href="//en.wikipedia.org/w/index.php?title=CGI.pm&amp;action=edit" class="external text">improve this article</a> by <a rel="mw:WikiLink" class="new" data-href="//en.wikipedia.org/wiki/Help:Referencing_for_beginners" title="Help:Referencing for beginners">introducing  citations to additional sources</a>.<br/><small><span class="plainlinks"><i>Find sources:</i><span typeof="mw:Entity">&#160;</span> <a rel="mw:ExtLink nofollow" href="https://www.google.com/search?as_eq=wikipedia&amp;q=%22CGI.pm%22" class="external text">"CGI.pm"</a> <span typeof="mw:Entity">&#160;</span>&#8211;<span typeof="mw:Entity">&#160;</span> <a rel="mw:ExtLink nofollow" href="https://www.google.com/search?tbm=nws&amp;q=%22CGI.pm%22+-wikipedia&amp;tbs=ar:1" class="external text">news</a>&#160;<b>&#183;</b> <a rel="mw:ExtLink nofollow" href="https://www.google.com/search?&amp;q=%22CGI.pm%22&amp;tbs=bkt:s&amp;tbm=bks" class="external text">newspapers</a>&#160;<b>&#183;</b> <a rel="mw:ExtLink nofollow" href="https://www.google.com/search?tbs=bks:1&amp;q=%22CGI.pm%22+-wikipedia" class="external text">books</a>&#160;<b>&#183;</b> <a rel="mw:ExtLink nofollow" href="https://scholar.google.com/scholar?q=%22CGI.pm%22" class="external text">scholar</a>&#160;<b>&#183;</b> <a rel="mw:ExtLink nofollow" href="https://www.jstor.org/action/doBasicSearch?Query=%22CGI.pm%22&amp;acc=on&amp;wc=on" class="external text">JSTOR</a> </span></small></span><span class="date-container"><i>(<span class="date">April 2024</span>)</i></span></div></td></tr></tbody></table><link rel="mw:PageProp/Category" target="_blank" href="//en.wikipedia.org/wiki/Category:Articles_needing_additional_references_from_April_2024" about="#mwt4"/><link rel="mw:PageProp/Category" target="_blank" href="//en.wikipedia.org/wiki/Category:All_articles_needing_additional_references" about="#mwt4" id="mwBg"/><style data-mw-deduplicate="TemplateStyles:r1316064257" typeof="mw:Extension/templatestyles mw:Transclusion" about="#mwt6" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Module:Infobox/styles.css&quot},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot},&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;Infobox software\n&quot;,&quot;href&quot;:&quot;./Template:Infobox_software&quot},&quot;params&quot;:{&quot;name&quot;:{&quot;wt&quot;:&quot;CGI.pm&quot},&quot;logo&quot;:{&quot;wt&quot;:&quot;&quot},&quot;screenshot&quot;:{&quot;wt&quot;:&quot;&quot},&quot;caption&quot;:{&quot;wt&quot;:&quot;&quot},&quot;author&quot;:{&quot;wt&quot;:&quot;[[Lincoln Stein]]&quot},&quot;developer&quot;:{&quot;wt&quot;:&quot;Lee Johnson&quot},&quot;released&quot;:{&quot;wt&quot;:&quot;&quot},&quot;latest release version&quot;:{&quot;wt&quot;:&quot;4.71&quot},&quot;latest release date&quot;:{&quot;wt&quot;:&quot;2025-10-01&quot},&quot;latest preview version&quot;:{&quot;wt&quot;:&quot;&quot},&quot;latest preview date&quot;:{&quot;wt&quot;:&quot;&quot},&quot;operating system&quot;:{&quot;wt&quot;:&quot;&quot},&quot;platform&quot;:{&quot;wt&quot;:&quot;[[Perl]]&quot},&quot;language&quot;:{&quot;wt&quot;:&quot;&quot},&quot;genre&quot;:{&quot;wt&quot;:&quot;[[Perl module]] for [[Common Gateway Interface|CGI]]&quot},&quot;license&quot;:{&quot;wt&quot;:&quot;[[Artistic License]]&quot},&quot;website&quot;:{&quot;wt&quot;:&quot;{{URL|https://metacpan.org/release/CGI}}&quot}},&quot;i&quot;:0}}]}" id="mwBw">.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent;color:inherit}.mw-parser-output .infobox-3cols-child{margin:-3px}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)&gt;div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)&gt;div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table&gt;caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table&gt;tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}</style><table class="infobox vevent" about="#mwt6"><tbody><tr><th colspan="2" class="infobox-above summary">CGI.pm</th></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"> <a rel="mw:WikiLink" href="./Programmer" title="Programmer">Original author</a> </th><td class="infobox-data"> <a rel="mw:WikiLink" href="./Lincoln_Stein" title="Lincoln Stein">Lincoln Stein</a> </td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"> <a rel="mw:WikiLink" href="./Programmer" title="Programmer">Developer</a> </th><td class="infobox-data">Lee Johnson</td></tr><tr style="display: none;"><td colspan="2" class="infobox-full-data"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1316064257" about="#mwt8" typeof="mw:Extension/templatestyles" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Module:Infobox/styles.css&quot;},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot;}}"/></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"> <a rel="mw:WikiLink" href="./Software_release_life_cycle" title="Software release life cycle">Stable release</a> </th><td class="infobox-data"><div style="margin:0px;">4.71    / 2025-10-01</div></td></tr><tr style="display:none"><td colspan="2"></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"> <a rel="mw:WikiLink" href="./Computing_platform" title="Computing platform">Platform</a> </th><td class="infobox-data"> <a rel="mw:WikiLink" href="./Perl" title="Perl">Perl</a> </td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"> <a rel="mw:WikiLink" href="./Software_categories#Categorization_approaches" title="Software categories">Type</a> </th><td class="infobox-data"> <a rel="mw:WikiLink" href="./Perl_module" title="Perl module">Perl module</a> for <a rel="mw:WikiLink" href="./Common_Gateway_Interface" title="Common Gateway Interface">CGI</a> </td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"> <a rel="mw:WikiLink" href="./Software_license" title="Software license">License</a> </th><td class="infobox-data"> <a rel="mw:WikiLink" href="./Artistic_License" title="Artistic License">Artistic License</a> </td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Website</th><td class="infobox-data"><span class="url"> <a rel="mw:ExtLink nofollow" href="https://metacpan.org/release/CGI" class="external text">metacpan<wbr/>.org<wbr/>/release<wbr/>/CGI</a> </span></td></tr></tbody></table><span about="#mwt6"></span><p id="mwCA"><b id="mwCQ">CGI.pm</b> is a large and once widely used <a rel="mw:WikiLink" href="./Perl_module" title="Perl module" id="mwCg">Perl module</a> for <a rel="mw:WikiLink" href="./Computer_programming" title="Computer programming" id="mwCw">programming</a> <a rel="mw:WikiLink" href="./Common_Gateway_Interface" title="Common Gateway Interface" id="mwDA">Common Gateway Interface</a> (CGI) <a rel="mw:WikiLink" title="WWW" class="mw-redirect" id="mwDQ" onclick="openRedirectLink(&quot;WWW&quot;)">web</a> applications, providing a consistent <a rel="mw:WikiLink" title="Application programming interface" class="mw-redirect" id="mwDg" onclick="openRedirectLink(&quot;Application_programming_interface&quot;)">API</a> for receiving and processing user input. There are also functions for producing <a rel="mw:WikiLink" href="./HTML" title="HTML" id="mwDw">HTML</a> or <a rel="mw:WikiLink" href="./XHTML" title="XHTML" id="mwEA">XHTML</a> output, but these are now unmaintained and are to be avoided.<sup about="#mwt11" class="mw-ref reference" id="cite_ref-auto_1-0"   data-mw="{&quot;name&quot;:&quot;ref&quot;,&quot;attrs&quot;:{&quot;name&quot;:&quot;auto&quot;},&quot;body&quot;:{&quot;id&quot;:&quot;mw-reference-text-cite_note-auto-1&quot;}}"> <a href="./CGI.pm#cite_note-auto-1" id="mwEQ"><span class="mw-reflink-text" id="mwEg"><span class="cite-bracket" id="mwEw">[</span>1<span class="cite-bracket" id="mwFA">]</span></span></a> </sup> CGI.pm was a core Perl module but has been removed as of v5.22 of Perl.<sup about="#mwt12" class="mw-ref reference" id="cite_ref-auto_1-1"   data-mw="{&quot;name&quot;:&quot;ref&quot;,&quot;attrs&quot;:{&quot;name&quot;:&quot;auto&quot;}}"> <a href="./CGI.pm#cite_note-auto-1" id="mwFQ"><span class="mw-reflink-text" id="mwFg"><span class="cite-bracket" id="mwFw">[</span>1<span class="cite-bracket" id="mwGA">]</span></span></a> </sup> The module was written by <a rel="mw:WikiLink" href="./Lincoln_Stein" title="Lincoln Stein" id="mwGQ">Lincoln Stein</a> <sup about="#mwt15" class="mw-ref reference" id="cite_ref-2"   data-mw="{&quot;name&quot;:&quot;ref&quot;,&quot;attrs&quot;:{},&quot;body&quot;:{&quot;id&quot;:&quot;mw-reference-text-cite_note-2&quot;}}"> <a href="./CGI.pm#cite_note-2" id="mwGg"><span class="mw-reflink-text" id="mwGw"><span class="cite-bracket" id="mwHA">[</span>2<span class="cite-bracket" id="mwHQ">]</span></span></a> </sup> and is now maintained by Lee Johnson.</p><h2 id="listHeader">Contents</h2><ul id="listClass"><li> <a href="#History">History</a> </li><li> <a href="#Examples">Examples</a> </li><li> <a href="#See_also">See also</a> </li><li> <a href="#References">References</a> </li><li> <a href="#External_links">External links</a> </li></ul><meta property="mw:PageProp/toc" data-mw="{&quot;autoGenerated&quot;:true}" id="mwHg"/></section><section data-mw-section-id="1" id="mwHw"><h2 id="History">History</h2><p id="mwIA">In 1993 the CGI specification was formalized to standardize how web servers could execute external programs and scripts; instead of just serving static files, they could generate dynamic content.&#160; In response to individual requests, CGI scripts could process user input and generate new HTML pages on the fly.<sup about="#mwt18" class="mw-ref reference" id="cite_ref-:0_3-0"   data-mw="{&quot;name&quot;:&quot;ref&quot;,&quot;attrs&quot;:{&quot;name&quot;:&quot;:0&quot;},&quot;body&quot;:{&quot;id&quot;:&quot;mw-reference-text-cite_note-:0-3&quot;}}"> <a href="./CGI.pm#cite_note-:0-3" id="mwIQ"><span class="mw-reflink-text" id="mwIg"><span class="cite-bracket" id="mwIw">[</span>3<span class="cite-bracket" id="mwJA">]</span></span></a> </sup></p><p id="mwJQ">CGI.pm was written by <a rel="mw:WikiLink" href="./Lincoln_Stein" title="Lincoln Stein" id="mwJg">Lincoln Stein</a> to simplify not only the process of correctly capturing information and data sent to a web site, but also generating the new HTML content in the response.</p><p id="mwJw">Before the advent of this module, creating a CGI script from scratch required writing code that could: </p><ol id="mwKA"><li id="mwKQ">Parse environment variables (to get request data)</li><li id="mwKg">Decode URL-encoded form data</li><li id="mwKw">Parse query strings</li><li id="mwLA">Generate proper HTTP headers</li><li id="mwLQ">Escape HTML output to prevent errors <sup about="#mwt19" class="mw-ref reference" id="cite_ref-:0_3-1"   data-mw="{&quot;name&quot;:&quot;ref&quot;,&quot;attrs&quot;:{&quot;name&quot;:&quot;:0&quot;}}"> <a href="./CGI.pm#cite_note-:0-3" id="mwLg"><span class="mw-reflink-text" id="mwLw"><span class="cite-bracket" id="mwMA">[</span>3<span class="cite-bracket" id="mwMQ">]</span></span></a> </sup></li></ol><p id="mwMg">In contrast, the various methods and functions available in CGI.pm allowed one to create a Perl script that automated a great deal of the more tedious coding (see examples below).  Many of the largest and most well-known web sites and Web Apps relied on CGI.pm when they were first launched: <a rel="mw:WikiLink" href="./EBay" title="EBay" id="mwMw">EBay</a>, <a rel="mw:WikiLink" href="./IMDb" title="IMDb" id="mwNA">IMDb</a>, <a rel="mw:WikiLink" href="./CPanel" title="CPanel" id="mwNQ">CPanel</a>, <a rel="mw:WikiLink" href="./Slashdot" title="Slashdot" id="mwNg">Slashdot</a>, <a rel="mw:WikiLink" href="./Craigslist" title="Craigslist" id="mwNw">Craigslist</a>, <a rel="mw:WikiLink" href="./Ticketmaster" title="Ticketmaster" id="mwOA">Ticketmaster</a>, <a rel="mw:WikiLink" href="./Booking.com" title="Booking.com" id="mwOQ">Booking.com</a>, <a rel="mw:WikiLink" href="./TWiki" title="TWiki" id="mwOg">TWiki</a>, <a rel="mw:WikiLink" href="./Bugzilla" title="Bugzilla" id="mwOw">Bugzilla</a>, <a rel="mw:WikiLink" href="./Movable_type" title="Movable type" id="mwPA">Movable type</a>, and <a rel="mw:WikiLink" href="./LiveJournal" title="LiveJournal" id="mwPQ">LiveJournal</a>. <sup about="#mwt22" class="mw-ref reference" id="cite_ref-4"   data-mw="{&quot;name&quot;:&quot;ref&quot;,&quot;attrs&quot;:{},&quot;body&quot;:{&quot;id&quot;:&quot;mw-reference-text-cite_note-4&quot;}}"> <a href="./CGI.pm#cite_note-4" id="mwPg"><span class="mw-reflink-text" id="mwPw"><span class="cite-bracket" id="mwQA">[</span>4<span class="cite-bracket" id="mwQQ">]</span></span></a> </sup>. However, in the interim, as web development toolkits expanded and evolved over time, these sites eventually migrated to using other programming languages and frameworks. <sup about="#mwt25" class="mw-ref reference" id="cite_ref-5"   data-mw="{&quot;name&quot;:&quot;ref&quot;,&quot;attrs&quot;:{},&quot;body&quot;:{&quot;id&quot;:&quot;mw-reference-text-cite_note-5&quot;}}"> <a href="./CGI.pm#cite_note-5" id="mwQg"><span class="mw-reflink-text" id="mwQw"><span class="cite-bracket" id="mwRA">[</span>5<span class="cite-bracket" id="mwRQ">]</span></span></a> </sup>,<sup about="#mwt28" class="mw-ref reference" id="cite_ref-6"   data-mw="{&quot;name&quot;:&quot;ref&quot;,&quot;attrs&quot;:{},&quot;body&quot;:{&quot;id&quot;:&quot;mw-reference-text-cite_note-6&quot;}}"> <a href="./CGI.pm#cite_note-6" id="mwRg"><span class="mw-reflink-text" id="mwRw"><span class="cite-bracket" id="mwSA">[</span>6<span class="cite-bracket" id="mwSQ">]</span></span></a> </sup></p></section><section data-mw-section-id="2" id="mwSg"><h2 id="Examples">Examples</h2><p id="mwSw">Here is a simple CGI page, written in Perl using CGI.pm (in <a rel="mw:WikiLink" href="./Object-oriented_programming" title="Object-oriented programming" id="mwTA">object-oriented</a> style):</p><div class="mw-highlight mw-highlight-lang-perl mw-content-ltr" dir="ltr" typeof="mw:Extension/syntaxhighlight" about="#mwt29" data-mw="{&quot;name&quot;:&quot;syntaxhighlight&quot;,&quot;attrs&quot;:{&quot;lang&quot;:&quot;perl&quot;},&quot;body&quot;:{&quot;extsrc&quot;:&quot;\n#!/usr/bin/env perl\n\nuse strict;\nuse warnings;\n\nuse CGI;\n\nmy $cgi = CGI-&gt;new;\n\nprint $cgi-&gt;header('text/html');\n\nprint &lt;&lt; \&quot;EndOfHTML\&quot;;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n    &lt;head&gt;\n        &lt;title&gt;A Simple CGI Page&lt;/title&gt;\n        &lt;meta http-equiv=\&quot;Content-Type\&quot; content=\&quot;text/html; charset=iso-8859-1\&quot; /&gt;\n    &lt;/head&gt;\n    &lt;body&gt;\n        &lt;h1&gt;A Simple CGI Page&lt;/h1&gt;\n        &lt;form method=\&quot;post\&quot; enctype=\&quot;multipart/form-data\&quot;&gt;\n Name: &lt;input type=\&quot;text\&quot; name=\&quot;name\&quot;  /&gt;&lt;br /&gt;\n Age: &lt;input type=\&quot;text\&quot; name=\&quot;age\&quot;  /&gt;&lt;p&gt;\n            &lt;input type=\&quot;submit\&quot; name=\&quot;Submit!\&quot; value=\&quot;Submit!\&quot; /&gt;\n        &lt;/form&gt;\n        &lt;hr /&gt;\nEndOfHTML\n\nif ( my $name = $cgi-&gt;param('name') ) {\n print \&quot;Your name is $name.&lt;br /&gt;\&quot;;\n}\n\nif ( my $age = $cgi-&gt;param('age') ) {\n print \&quot;You are $age years old.\&quot;;\n}\n\nprint '&lt;/body&gt;&lt;/html&gt;';\n&quot;}}" id="mwTQ"><pre id="mwTg"><span id="mwTw"/><span class="ch" id="mwUA">#!/usr/bin/env perl</span><span class="k" id="mwUQ">use</span><span class="w" id="mwUg"></span><span class="nn" id="mwUw">strict</span><span class="p" id="mwVA">;</span><span class="k" id="mwVQ">use</span><span class="w" id="mwVg"></span><span class="nn" id="mwVw">warnings</span><span class="p" id="mwWA">;</span><span class="k" id="mwWQ">use</span><span class="w" id="mwWg"></span><span class="nn" id="mwWw">CGI</span><span class="p" id="mwXA">;</span><span class="k" id="mwXQ">my</span><span class="w" id="mwXg"></span><span class="nv" id="mwXw">$cgi</span><span class="w" id="mwYA"></span><span class="o" id="mwYQ">=</span><span class="w" id="mwYg"></span><span class="nn" id="mwYw">CGI</span><span class="o" id="mwZA">-&gt;</span><span class="k" id="mwZQ">new</span><span class="p" id="mwZg">;</span><span class="k" id="mwZw">print</span><span class="w" id="mwaA"></span><span class="nv" id="mwaQ">$cgi</span><span class="o" id="mwag">-&gt;</span><span class="n" id="mwaw">header</span><span class="p" id="mwbA">(</span><span class="s" id="mwbQ">'text/html'</span><span class="p" id="mwbg">);</span><span class="k" id="mwbw">print</span><span class="w" id="mwcA"></span><span class="o" id="mwcQ">&lt;&lt;</span><span class="w" id="mwcg"></span><span class="s" id="mwcw">"EndOfHTML"</span><span class="p" id="mwdA">;</span><span class="o" id="mwdQ">&lt;!</span><span class="n" id="mwdg">DOCTYPE</span><span class="w" id="mwdw"></span><span class="n" id="mweA">html</span><span class="o" id="mweQ">&gt;</span><span class="sr" id="mweg">&lt;html&gt;</span><span class="w" id="mwew"></span><span class="sr" id="mwfA">&lt;head&gt;</span><span class="w" id="mwfQ"></span><span class="sr" id="mwfg">&lt;title&gt;</span><span class="n" id="mwfw">A</span><span class="w" id="mwgA"></span><span class="n" id="mwgQ">Simple</span><span class="w" id="mwgg"></span><span class="n" id="mwgw">CGI</span><span class="w" id="mwhA"></span><span class="n" id="mwhQ">Page</span><span class="sr" id="mwhg">&lt;/title&gt;</span><span class="w" id="mwhw"></span><span class="o" id="mwiA">&lt;</span><span class="n" id="mwiQ">meta</span><span class="w" id="mwig"></span><span class="n" id="mwiw">http</span><span class="o" id="mwjA">-</span><span class="n" id="mwjQ">equiv</span><span class="o" id="mwjg">=</span><span class="s" id="mwjw">"Content-Type"</span><span class="w" id="mwkA"></span><span class="n" id="mwkQ">content</span><span class="o" id="mwkg">=</span><span class="s" id="mwkw">"text/html; charset=iso-8859-1"</span><span class="w" id="mwlA"></span><span class="o" id="mwlQ">/&gt;</span><span class="w" id="mwlg"></span><span class="sr" id="mwlw">&lt;/head&gt;</span><span class="w" id="mwmA"></span><span class="sr" id="mwmQ">&lt;body&gt;</span><span class="w" id="mwmg"></span><span class="sr" id="mwmw">&lt;h1&gt;</span><span class="n" id="mwnA">A</span><span class="w" id="mwnQ"></span><span class="n" id="mwng">Simple</span><span class="w" id="mwnw"></span><span class="n" id="mwoA">CGI</span><span class="w" id="mwoQ"></span><span class="n" id="mwog">Page</span><span class="sr" id="mwow">&lt;/h1&gt;</span><span class="w" id="mwpA"></span><span class="o" id="mwpQ">&lt;</span><span class="n" id="mwpg">form</span><span class="w" id="mwpw"></span><span class="n" id="mwqA">method</span><span class="o" id="mwqQ">=</span><span class="s" id="mwqg">"post"</span><span class="w" id="mwqw"></span><span class="n" id="mwrA">enctype</span><span class="o" id="mwrQ">=</span><span class="s" id="mwrg">"multipart/form-data"</span><span class="o" id="mwrw">&gt;</span><span class="w" id="mwsA"></span><span class="n" id="mwsQ">Name:</span><span class="w" id="mwsg"></span><span class="o" id="mwsw">&lt;</span><span class="n" id="mwtA">input</span><span class="w" id="mwtQ"></span><span class="n" id="mwtg">type</span><span class="o" id="mwtw">=</span><span class="s" id="mwuA">"text"</span><span class="w" id="mwuQ"></span><span class="n" id="mwug">name</span><span class="o" id="mwuw">=</span><span class="s" id="mwvA">"name"</span><span class="w" id="mwvQ"></span><span class="sr" id="mwvg">/&gt;&lt;br /</span><span class="o" id="mwvw">&gt;</span><span class="w" id="mwwA"></span><span class="n" id="mwwQ">Age:</span><span class="w" id="mwwg"></span><span class="o" id="mwww">&lt;</span><span class="n" id="mwxA">input</span><span class="w" id="mwxQ"></span><span class="n" id="mwxg">type</span><span class="o" id="mwxw">=</span><span class="s" id="mwyA">"text"</span><span class="w" id="mwyQ"></span><span class="n" id="mwyg">name</span><span class="o" id="mwyw">=</span><span class="s" id="mwzA">"age"</span><span class="w" id="mwzQ"></span><span class="o" id="mwzg">/&gt;</span><span class="sr" id="mwzw">&lt;p&gt;</span><span class="w" id="mw0A"></span><span class="o" id="mw0Q">&lt;</span><span class="n" id="mw0g">input</span><span class="w" id="mw0w"></span><span class="n" id="mw1A">type</span><span class="o" id="mw1Q">=</span><span class="s" id="mw1g">"submit"</span><span class="w" id="mw1w"></span><span class="n" id="mw2A">name</span><span class="o" id="mw2Q">=</span><span class="s" id="mw2g">"Submit!"</span><span class="w" id="mw2w"></span><span class="n" id="mw3A">value</span><span class="o" id="mw3Q">=</span><span class="s" id="mw3g">"Submit!"</span><span class="w" id="mw3w"></span><span class="o" id="mw4A">/&gt;</span><span class="w" id="mw4Q"></span><span class="sr" id="mw4g">&lt;/form&gt;</span><span class="w" id="mw4w"></span><span class="o" id="mw5A">&lt;</span><span class="n" id="mw5Q">hr</span><span class="w" id="mw5g"></span><span class="o" id="mw5w">/&gt;</span><span class="n" id="mw6A">EndOfHTML</span><span class="k" id="mw6Q">if</span><span class="w" id="mw6g"></span><span class="p" id="mw6w">(</span><span class="w" id="mw7A"></span><span class="k" id="mw7Q">my</span><span class="w" id="mw7g"></span><span class="nv" id="mw7w">$name</span><span class="w" id="mw8A"></span><span class="o" id="mw8Q">=</span><span class="w" id="mw8g"></span><span class="nv" id="mw8w">$cgi</span><span class="o" id="mw9A">-&gt;</span><span class="n" id="mw9Q">param</span><span class="p" id="mw9g">(</span><span class="s" id="mw9w">'name'</span><span class="p" id="mw-A">)</span><span class="w" id="mw-Q"></span><span class="p" id="mw-g">)</span><span class="w" id="mw-w"></span><span class="p" id="mw_A">{</span><span class="w" id="mw_Q"></span><span class="k" id="mw_g">print</span><span class="w" id="mw_w"></span><span class="s" id="mwAQA">"Your name is $name.&lt;br /&gt;"</span><span class="p" id="mwAQE">;</span><span class="p" id="mwAQI">}</span><span class="k" id="mwAQM">if</span><span class="w" id="mwAQQ"></span><span class="p" id="mwAQU">(</span><span class="w" id="mwAQY"></span><span class="k" id="mwAQc">my</span><span class="w" id="mwAQg"></span><span class="nv" id="mwAQk">$age</span><span class="w" id="mwAQo"></span><span class="o" id="mwAQs">=</span><span class="w" id="mwAQw"></span><span class="nv" id="mwAQ0">$cgi</span><span class="o" id="mwAQ4">-&gt;</span><span class="n" id="mwAQ8">param</span><span class="p" id="mwARA">(</span><span class="s" id="mwARE">'age'</span><span class="p" id="mwARI">)</span><span class="w" id="mwARM"></span><span class="p" id="mwARQ">)</span><span class="w" id="mwARU"></span><span class="p" id="mwARY">{</span><span class="w" id="mwARc"></span><span class="k" id="mwARg">print</span><span class="w" id="mwARk"></span><span class="s" id="mwARo">"You are $age years old."</span><span class="p" id="mwARs">;</span><span class="p" id="mwARw">}</span><span class="k" id="mwAR0">print</span><span class="w" id="mwAR4"></span><span class="s" id="mwAR8">'&lt;/body&gt;&lt;/html&gt;'</span><span class="p" id="mwASA">;</span></pre></div><p id="mwASE">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 <style data-mw-deduplicate="TemplateStyles:r886049734" typeof="mw:Extension/templatestyles mw:Transclusion" about="#mwt30" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Mono/styles.css&quot},&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;mono&quot;,&quot;href&quot;:&quot;./Template:Mono&quot},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;$cgi-&gt;&quot}},&quot;i&quot;:0}}]}" id="mwASI">.mw-parser-output .monospaced{font-family:monospace,monospace}</style><span class="monospaced" about="#mwt30" id="mwASM">$cgi-&gt;</span>, however the necessary functions must be imported into the namespace of the script that requires access to those functions:</p><div class="mw-highlight mw-highlight-lang-perl mw-content-ltr" dir="ltr" typeof="mw:Extension/syntaxhighlight" about="#mwt32" data-mw="{&quot;name&quot;:&quot;syntaxhighlight&quot;,&quot;attrs&quot;:{&quot;lang&quot;:&quot;perl&quot;},&quot;body&quot;:{&quot;extsrc&quot;:&quot;\n#!perl\n\nuse strict;\nuse warnings;\nuse CGI qw/ :standard /;\n\nprint header('text/html');\n\n# ... HTML output same as above example\n\nif ( my $name = param('name') ) {\n print \&quot;Your name is $name.&lt;br /&gt;\&quot;;\n}\n\nif ( my $age = param('age') ) {\n print \&quot;You are $age years old.\&quot;;\n}\n\nprint '&lt;/body&gt;&lt;/html&gt;';\n&quot;}}" id="mwASQ"><pre id="mwASU"><span id="mwASY"/><span class="ch" id="mwASc">#!perl</span><span class="k" id="mwASg">use</span><span class="w" id="mwASk"></span><span class="nn" id="mwASo">strict</span><span class="p" id="mwASs">;</span><span class="k" id="mwASw">use</span><span class="w" id="mwAS0"></span><span class="nn" id="mwAS4">warnings</span><span class="p" id="mwAS8">;</span><span class="k" id="mwATA">use</span><span class="w" id="mwATE"></span><span class="nn" id="mwATI">CGI</span><span class="w" id="mwATM"></span><span class="sx" id="mwATQ">qw/ :standard /</span><span class="p" id="mwATU">;</span><span class="k" id="mwATY">print</span><span class="w" id="mwATc"></span><span class="n" id="mwATg">header</span><span class="p" id="mwATk">(</span><span class="s" id="mwATo">'text/html'</span><span class="p" id="mwATs">);</span><span class="c1" id="mwATw"># ... HTML output same as above example</span><span class="k" id="mwAT0">if</span><span class="w" id="mwAT4"></span><span class="p" id="mwAT8">(</span><span class="w" id="mwAUA"></span><span class="k" id="mwAUE">my</span><span class="w" id="mwAUI"></span><span class="nv" id="mwAUM">$name</span><span class="w" id="mwAUQ"></span><span class="o" id="mwAUU">=</span><span class="w" id="mwAUY"></span><span class="n" id="mwAUc">param</span><span class="p" id="mwAUg">(</span><span class="s" id="mwAUk">'name'</span><span class="p" id="mwAUo">)</span><span class="w" id="mwAUs"></span><span class="p" id="mwAUw">)</span><span class="w" id="mwAU0"></span><span class="p" id="mwAU4">{</span><span class="w" id="mwAU8"></span><span class="k" id="mwAVA">print</span><span class="w" id="mwAVE"></span><span class="s" id="mwAVI">"Your name is $name.&lt;br /&gt;"</span><span class="p" id="mwAVM">;</span><span class="p" id="mwAVQ">}</span><span class="k" id="mwAVU">if</span><span class="w" id="mwAVY"></span><span class="p" id="mwAVc">(</span><span class="w" id="mwAVg"></span><span class="k" id="mwAVk">my</span><span class="w" id="mwAVo"></span><span class="nv" id="mwAVs">$age</span><span class="w" id="mwAVw"></span><span class="o" id="mwAV0">=</span><span class="w" id="mwAV4"></span><span class="n" id="mwAV8">param</span><span class="p" id="mwAWA">(</span><span class="s" id="mwAWE">'age'</span><span class="p" id="mwAWI">)</span><span class="w" id="mwAWM"></span><span class="p" id="mwAWQ">)</span><span class="w" id="mwAWU"></span><span class="p" id="mwAWY">{</span><span class="w" id="mwAWc"></span><span class="k" id="mwAWg">print</span><span class="w" id="mwAWk"></span><span class="s" id="mwAWo">"You are $age years old."</span><span class="p" id="mwAWs">;</span><span class="p" id="mwAWw">}</span><span class="k" id="mwAW0">print</span><span class="w" id="mwAW4"></span><span class="s" id="mwAW8">'&lt;/body&gt;&lt;/html&gt;'</span><span class="p" id="mwAXA">;</span></pre></div><p id="mwAXE">Note: in many examples <var style="padding-right: 1px;" about="#mwt33"  data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;var&quot;,&quot;href&quot;:&quot;./Template:Var&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;$q&quot;}},&quot;i&quot;:0}}]}" id="mwAXI">$q</var>, short for query, is used to store a CGI object.</p></section><section data-mw-section-id="3" id="mwAXM"><h2 id="See_also">See also</h2><style data-mw-deduplicate="TemplateStyles:r1266661725" typeof="mw:Extension/templatestyles mw:Transclusion" about="#mwt34" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Module:Portal/styles.css&quot},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot},&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;Portal&quot;,&quot;href&quot;:&quot;./Template:Portal&quot},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;Computer programming&quot},&quot;2&quot;:{&quot;wt&quot;:&quot;Free and open-source software&quot}},&quot;i&quot;:0}}]}" id="mwAXQ">.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}</style><ul role="navigation" aria-label="Portals" class="noprint portalbox portalborder portalright" about="#mwt34" id="mwAXU"><li class="portalbox-entry"><span class="portalbox-image"><span class="skin-invert-image noviewer" typeof="mw:File"> <a onclick="showImg(this)" id="Octicons-terminal.svg" class="mw-file-description"><img alt="Octicons-terminal.svg" resource="./File:Octicons-terminal.svg" src="//upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/40px-Octicons-terminal.svg.png" decoding="async" data-file-width="896" data-file-height="1024" data-file-type="drawing" height="28" width="24" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Octicons-terminal.svg/60px-Octicons-terminal.svg.png 2x" class="mw-file-element"/></a> </span></span><span class="portalbox-link"> <a rel="mw:WikiLink" class="new" data-href="//en.wikipedia.org/wiki/Portal:Computer_programming" title="Portal:Computer programming">Computer programming portal</a> </span></li><li class="portalbox-entry"><span class="portalbox-image"><span class="noviewer" typeof="mw:File"><span><img alt="Free and open-source software logo (2009).svg" resource="./File:Free_and_open-source_software_logo_(2009).svg" src="//upload.wikimedia.org/wikipedia/commons/thumb/3/31/Free_and_open-source_software_logo_%282009%29.svg/40px-Free_and_open-source_software_logo_%282009%29.svg.png" decoding="async" data-file-width="512" data-file-height="512" data-file-type="drawing" height="28" width="28" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/3/31/Free_and_open-source_software_logo_%282009%29.svg/60px-Free_and_open-source_software_logo_%282009%29.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/3/31/Free_and_open-source_software_logo_%282009%29.svg/60px-Free_and_open-source_software_logo_%282009%29.svg.png 2x" class="mw-file-element"/></span></span></span><span class="portalbox-link"> <a rel="mw:WikiLink" class="new" data-href="//en.wikipedia.org/wiki/Portal:Free_and_open-source_software" title="Portal:Free and open-source software">Free and open-source software portal</a> </span></li></ul><ul id="mwAXY"><li id="mwAXc"> <a rel="mw:WikiLink" href="./Mod_perl" title="Mod perl" id="mwAXg">mod_perl</a> </li></ul></section><section data-mw-section-id="4" id="mwAXk"><h2 id="References">References</h2><style data-mw-deduplicate="TemplateStyles:r1327269900" typeof="mw:Extension/templatestyles mw:Transclusion" about="#mwt36" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Reflist/styles.css&quot},&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;Reflist&quot;,&quot;href&quot;:&quot;./Template:Reflist&quot},&quot;params&quot;:{},&quot;i&quot;:0}}]}" id="mwAXo">.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}body.skin-vector-2022 .mw-parser-output .reflist-columns-2{column-width:27em}body.skin-vector-2022 .mw-parser-output .reflist-columns-3{column-width:22.5em}.mw-parser-output .references[data-mw-group=upper-alpha]{list-style-type:upper-alpha}.mw-parser-output .references[data-mw-group=upper-roman]{list-style-type:upper-roman}.mw-parser-output .references[data-mw-group=lower-alpha]{list-style-type:lower-alpha}.mw-parser-output .references[data-mw-group=lower-greek]{list-style-type:lower-greek}.mw-parser-output .references[data-mw-group=lower-roman]{list-style-type:lower-roman}.mw-parser-output div.reflist-liststyle-upper-alpha .references{list-style-type:upper-alpha}.mw-parser-output div.reflist-liststyle-upper-roman .references{list-style-type:upper-roman}.mw-parser-output div.reflist-liststyle-lower-alpha .references{list-style-type:lower-alpha}.mw-parser-output div.reflist-liststyle-lower-greek .references{list-style-type:lower-greek}.mw-parser-output div.reflist-liststyle-lower-roman .references{list-style-type:lower-roman}</style><div about="#mwt36" id="mwAXs"><div class="mw-references-wrap" typeof="mw:Extension/references" about="#mwt38" data-mw="{&quot;name&quot;:&quot;references&quot;,&quot;attrs&quot;:{&quot;group&quot;:&quot;&quot;,&quot;responsive&quot;:&quot;1&quot;},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot;}}" id="mwAXw"><ol class="mw-references references" id="mwAX0"><li about="#cite_note-auto-1" id="cite_note-auto-1" data-mw-footnote-number="1"><span rel="mw:referencedBy" class="mw-cite-backlink" id="mwAX4"> <a href="./CGI.pm#cite_ref-auto_1-0" id="mwAX8"><span class="mw-linkback-text" id="mwAYA">1</span></a> <a href="./CGI.pm#cite_ref-auto_1-1" id="mwAYE"><span class="mw-linkback-text" id="mwAYI">2</span></a> </span><span id="mw-reference-text-cite_note-auto-1" class="mw-reference-text reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222" typeof="mw:Extension/templatestyles mw:Transclusion" about="#mwt9" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Module:Citation/CS1/styles.css&quot},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot},&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;Cite web&quot;,&quot;href&quot;:&quot;./Template:Cite_web&quot},&quot;params&quot;:{&quot;url&quot;:{&quot;wt&quot;:&quot;https://metacpan.org/dist/CGI/view/lib/CGI.pod&quot},&quot;title&quot;:{&quot;wt&quot;:&quot;CGI - Handle Common Gateway Interface requests and responses - metacpan.org&quot},&quot;website&quot;:{&quot;wt&quot;:&quot;metacpan.org&quot}},&quot;i&quot;:0}}]}" id="mwAYM">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite class="citation web cs1" about="#mwt9" id="mwAYQ"> <a rel="mw:ExtLink nofollow" href="https://metacpan.org/dist/CGI/view/lib/CGI.pod" class="external text" id="mwAYU">"CGI - Handle Common Gateway Interface requests and responses - metacpan.org"</a>. <i id="mwAYY">metacpan.org</i>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=metacpan.org&amp;rft.atitle=CGI+-+Handle+Common+Gateway+Interface+requests+and+responses+-+metacpan.org&amp;rft_id=https%3A%2F%2Fmetacpan.org%2Fdist%2FCGI%2Fview%2Flib%2FCGI.pod&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACGI.pm" class="Z3988" about="#mwt9" id="mwAYc"/></span></li><li about="#cite_note-2" id="cite_note-2" data-mw-footnote-number="2"><span class="mw-cite-backlink" id="mwAYg"> <a href="./CGI.pm#cite_ref-2" rel="mw:referencedBy" id="mwAYk"><span class="mw-linkback-text" id="mwAYo">&#8593;</span></a> </span><span id="mw-reference-text-cite_note-2" class="mw-reference-text reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" about="#mwt13" typeof="mw:Extension/templatestyles mw:Transclusion" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Module:Citation/CS1/styles.css&quot;},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot;},&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;cite book &quot;,&quot;href&quot;:&quot;./Template:Cite_book&quot;},&quot;params&quot;:{&quot;author&quot;:{&quot;wt&quot;:&quot;Stein, Lincoln D.&quot;},&quot;title&quot;:{&quot;wt&quot;:&quot;Official guide to programming with CGI. pm: [the standard for building Web scripts]&quot;},&quot;publisher&quot;:{&quot;wt&quot;:&quot;Wiley&quot;},&quot;location&quot;:{&quot;wt&quot;:&quot;New York&quot;},&quot;year&quot;:{&quot;wt&quot;:&quot;1998&quot;},&quot;isbn&quot;:{&quot;wt&quot;:&quot;978-0-471-24744-9&quot;},&quot;url&quot;:{&quot;wt&quot;:&quot;https://archive.org/details/officialguidetop00stei&quot;}},&quot;i&quot;:0}}]}" id="mwAYs"/><cite id="CITEREFStein,_Lincoln_D.1998" class="citation book cs1" about="#mwt13">Stein, Lincoln D. (1998). <a rel="mw:ExtLink nofollow" href="https://archive.org/details/officialguidetop00stei" class="external text" id="mwAYw"><i id="mwAY0">Official guide to programming with CGI. pm: <span typeof="mw:Entity" id="mwAY4">[</span>the standard for building Web scripts<span typeof="mw:Entity" id="mwAY8">]</span></i></a>. New York: Wiley. <a rel="mw:WikiLink" title="ISBN (identifier)" class="mw-redirect" id="mwAZA" onclick="openRedirectLink(&quot;ISBN_(identifier)&quot;)">ISBN</a> <span typeof="mw:Entity" id="mwAZE">&#160;</span> <a rel="mw:WikiLink" target="_blank" href="//en.wikipedia.org/wiki/Special:BookSources/978-0-471-24744-9" title="Special:BookSources/978-0-471-24744-9" id="mwAZI"><bdi id="mwAZM">978-0-471-24744-9</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=book&amp;rft.btitle=Official+guide+to+programming+with+CGI.+pm%3A+%5Bthe+standard+for+building+Web+scripts%5D&amp;rft.place=New+York&amp;rft.pub=Wiley&amp;rft.date=1998&amp;rft.isbn=978-0-471-24744-9&amp;rft.au=Stein%2C+Lincoln+D.&amp;rft_id=https%3A%2F%2Farchive.org%2Fdetails%2Fofficialguidetop00stei&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACGI.pm" class="Z3988" about="#mwt13" id="mwAZQ"/></span></li><li about="#cite_note-:0-3" id="cite_note-:0-3" data-mw-footnote-number="3"><span rel="mw:referencedBy" class="mw-cite-backlink" id="mwAZU"> <a href="./CGI.pm#cite_ref-:0_3-0" id="mwAZY"><span class="mw-linkback-text" id="mwAZc">1</span></a> <a href="./CGI.pm#cite_ref-:0_3-1" id="mwAZg"><span class="mw-linkback-text" id="mwAZk">2</span></a> </span><span id="mw-reference-text-cite_note-:0-3" class="mw-reference-text reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" about="#mwt16" typeof="mw:Extension/templatestyles mw:Transclusion" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Module:Citation/CS1/styles.css&quot;},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot;},&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;Cite report &quot;,&quot;href&quot;:&quot;./Template:Cite_report&quot;},&quot;params&quot;:{&quot;url&quot;:{&quot;wt&quot;:&quot;https://datatracker.ietf.org/doc/rfc3875/&quot;},&quot;title&quot;:{&quot;wt&quot;:&quot;The Common Gateway Interface (CGI) Version 1.1&quot;},&quot;last&quot;:{&quot;wt&quot;:&quot;Coar&quot;},&quot;first&quot;:{&quot;wt&quot;:&quot;Ken A. L.&quot;},&quot;last2&quot;:{&quot;wt&quot;:&quot;Robinson&quot;},&quot;first2&quot;:{&quot;wt&quot;:&quot;David&quot;},&quot;date&quot;:{&quot;wt&quot;:&quot;October 2004&quot;},&quot;publisher&quot;:{&quot;wt&quot;:&quot;Internet Engineering Task Force&quot;},&quot;issue&quot;:{&quot;wt&quot;:&quot;RFC 3875&quot;},&quot;access-date&quot;:{&quot;wt&quot;:&quot;2025-12-24&quot;},&quot;url-status&quot;:{&quot;wt&quot;:&quot;&quot;}},&quot;i&quot;:0}}]}" id="mwAZo"/><cite id="CITEREFCoarRobinson2004" class="citation report cs1" about="#mwt16">Coar, Ken A. L.; Robinson, David (October 2004). <a rel="mw:ExtLink nofollow" href="https://datatracker.ietf.org/doc/rfc3875/" class="external text" id="mwAZs">The Common Gateway Interface (CGI) Version 1.1</a> (Report). Internet Engineering Task Force<span class="reference-accessdate" id="mwAZw">. Retrieved <span class="nowrap" id="mwAZ0">2025-12-24</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=report&amp;rft.btitle=The+Common+Gateway+Interface+%28CGI%29+Version+1.1&amp;rft.pub=Internet+Engineering+Task+Force&amp;rft.date=2004-10&amp;rft.aulast=Coar&amp;rft.aufirst=Ken+A.+L.&amp;rft.au=Robinson%2C+David&amp;rft_id=https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Frfc3875%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACGI.pm" class="Z3988" about="#mwt16" id="mwAZ4"/></span></li><li about="#cite_note-4" id="cite_note-4" data-mw-footnote-number="4"><span class="mw-cite-backlink" id="mwAZ8"> <a href="./CGI.pm#cite_ref-4" rel="mw:referencedBy" id="mwAaA"><span class="mw-linkback-text" id="mwAaE">&#8593;</span></a> </span><span id="mw-reference-text-cite_note-4" class="mw-reference-text reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" about="#mwt20" typeof="mw:Extension/templatestyles mw:Transclusion" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Module:Citation/CS1/styles.css&quot;},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot;},&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;Cite web &quot;,&quot;href&quot;:&quot;./Template:Cite_web&quot;},&quot;params&quot;:{&quot;title&quot;:{&quot;wt&quot;:&quot;All Software is Legacy&quot;},&quot;url&quot;:{&quot;wt&quot;:&quot;https://leejo.github.io/2016/02/22/all_software_is_legacy/&quot;},&quot;access-date&quot;:{&quot;wt&quot;:&quot;2025-12-24&quot;},&quot;website&quot;:{&quot;wt&quot;:&quot;leejo.github.io&quot;}},&quot;i&quot;:0}}]}" id="mwAaI"/><cite class="citation web cs1" about="#mwt20" id="mwAaM"> <a rel="mw:ExtLink nofollow" href="https://leejo.github.io/2016/02/22/all_software_is_legacy/" class="external text" id="mwAaQ">"All Software is Legacy"</a>. <i id="mwAaU">leejo.github.io</i><span class="reference-accessdate" id="mwAaY">. Retrieved <span class="nowrap" id="mwAac">2025-12-24</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=leejo.github.io&amp;rft.atitle=All+Software+is+Legacy&amp;rft_id=https%3A%2F%2Fleejo.github.io%2F2016%2F02%2F22%2Fall_software_is_legacy%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACGI.pm" class="Z3988" about="#mwt20" id="mwAag"/></span></li><li about="#cite_note-5" id="cite_note-5" data-mw-footnote-number="5"><span class="mw-cite-backlink" id="mwAak"> <a href="./CGI.pm#cite_ref-5" rel="mw:referencedBy" id="mwAao"><span class="mw-linkback-text" id="mwAas">&#8593;</span></a> </span><span id="mw-reference-text-cite_note-5" class="mw-reference-text reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" about="#mwt23" typeof="mw:Extension/templatestyles mw:Transclusion" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Module:Citation/CS1/styles.css&quot;},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot;},&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;Cite web &quot;,&quot;href&quot;:&quot;./Template:Cite_web&quot;},&quot;params&quot;:{&quot;last&quot;:{&quot;wt&quot;:&quot;Stevenson&quot;},&quot;first&quot;:{&quot;wt&quot;:&quot;Michael&quot;},&quot;title&quot;:{&quot;wt&quot;:&quot;Perl and the birth of the dynamic web {{!}} Opensource.com&quot;},&quot;url&quot;:{&quot;wt&quot;:&quot;https://opensource.com/life/16/11/perl-and-birth-dynamic-web&quot;},&quot;access-date&quot;:{&quot;wt&quot;:&quot;2025-12-24&quot;},&quot;website&quot;:{&quot;wt&quot;:&quot;opensource.com&quot;},&quot;language&quot;:{&quot;wt&quot;:&quot;en&quot;}},&quot;i&quot;:0}}]}" id="mwAaw"/><cite id="CITEREFStevenson" class="citation web cs1" about="#mwt23">Stevenson, Michael. <a rel="mw:ExtLink nofollow" href="https://opensource.com/life/16/11/perl-and-birth-dynamic-web" class="external text" id="mwAa0">"Perl and the birth of the dynamic web | Opensource.com"</a>. <i id="mwAa4">opensource.com</i><span class="reference-accessdate" id="mwAa8">. Retrieved <span class="nowrap" id="mwAbA">2025-12-24</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=opensource.com&amp;rft.atitle=Perl+and+the+birth+of+the+dynamic+web+%7C+Opensource.com&amp;rft.aulast=Stevenson&amp;rft.aufirst=Michael&amp;rft_id=https%3A%2F%2Fopensource.com%2Flife%2F16%2F11%2Fperl-and-birth-dynamic-web&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACGI.pm" class="Z3988" about="#mwt23" id="mwAbE"/></span></li><li about="#cite_note-6" id="cite_note-6" data-mw-footnote-number="6"><span class="mw-cite-backlink" id="mwAbI"> <a href="./CGI.pm#cite_ref-6" rel="mw:referencedBy" id="mwAbM"><span class="mw-linkback-text" id="mwAbQ">&#8593;</span></a> </span><span id="mw-reference-text-cite_note-6" class="mw-reference-text reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" about="#mwt26" typeof="mw:Extension/templatestyles mw:Transclusion" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Module:Citation/CS1/styles.css&quot;},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot;},&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;Cite journal &quot;,&quot;href&quot;:&quot;./Template:Cite_journal&quot;},&quot;params&quot;:{&quot;last&quot;:{&quot;wt&quot;:&quot;Stevenson&quot;},&quot;first&quot;:{&quot;wt&quot;:&quot;Michael&quot;},&quot;date&quot;:{&quot;wt&quot;:&quot;2018-10-02&quot;},&quot;title&quot;:{&quot;wt&quot;:&quot;Having it both ways: Larry Wall, Perl and the technology and culture of the early web&quot;},&quot;url&quot;:{&quot;wt&quot;:&quot;https://doi.org/10.1080/24701475.2018.1495810&quot;},&quot;journal&quot;:{&quot;wt&quot;:&quot;Internet Histories&quot;},&quot;volume&quot;:{&quot;wt&quot;:&quot;2&quot;},&quot;issue&quot;:{&quot;wt&quot;:&quot;3-4&quot;},&quot;pages&quot;:{&quot;wt&quot;:&quot;264&#8211;280&quot;},&quot;doi&quot;:{&quot;wt&quot;:&quot;10.1080/24701475.2018.1495810&quot;},&quot;issn&quot;:{&quot;wt&quot;:&quot;2470-1475&quot;}},&quot;i&quot;:0}}]}" id="mwAbU"/><cite id="CITEREFStevenson2018" class="citation journal cs1" about="#mwt26">Stevenson, Michael (2018-10-02). <a rel="mw:ExtLink nofollow" href="https://doi.org/10.1080/24701475.2018.1495810" class="external text" id="mwAbY">"Having it both ways: Larry Wall, Perl and the technology and culture of the early web"</a>. <i id="mwAbc">Internet Histories</i>. <b id="mwAbg">2</b> (<span class="nowrap" id="mwAbk">3&#8211;</span>4): <span class="nowrap" id="mwAbo">264&#8211;</span>280. <a rel="mw:WikiLink" title="Doi (identifier)" class="mw-redirect" id="mwAbs" onclick="openRedirectLink(&quot;Doi_(identifier)&quot;)">doi</a>:<a rel="mw:ExtLink nofollow" href="https://doi.org/10.1080%2F24701475.2018.1495810" class="external text" id="mwAbw">10.1080/24701475.2018.1495810</a>. <a rel="mw:WikiLink" title="ISSN (identifier)" class="mw-redirect" id="mwAb0" onclick="openRedirectLink(&quot;ISSN_(identifier)&quot;)">ISSN</a> <span typeof="mw:Entity" id="mwAb4">&#160;</span> <a rel="mw:ExtLink nofollow" href="https://search.worldcat.org/issn/2470-1475" class="external text" id="mwAb8">2470-1475</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.jtitle=Internet+Histories&amp;rft.atitle=Having+it+both+ways%3A+Larry+Wall%2C+Perl+and+the+technology+and+culture+of+the+early+web&amp;rft.volume=2&amp;rft.issue=%3Cspan+class%3D%22nowrap%22%3E3%E2%80%93%3C%2Fspan%3E4&amp;rft.pages=264-280&amp;rft.date=2018-10-02&amp;rft_id=info%3Adoi%2F10.1080%2F24701475.2018.1495810&amp;rft.issn=2470-1475&amp;rft.aulast=Stevenson&amp;rft.aufirst=Michael&amp;rft_id=https%3A%2F%2Fdoi.org%2F10.1080%2F24701475.2018.1495810&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ACGI.pm" class="Z3988" about="#mwt26" id="mwAcA"/></span></li></ol></div></div></section><section data-mw-section-id="5" id="mwAcE"><h2 id="External_links">External links</h2><style data-mw-deduplicate="TemplateStyles:r1314755338" typeof="mw:Extension/templatestyles mw:Transclusion" about="#mwt39" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Module:Side box/styles.css&quot},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot},&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;Wikibooks&quot;,&quot;href&quot;:&quot;./Template:Wikibooks&quot},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;Perl Programming&quot},&quot;2&quot;:{&quot;wt&quot;:&quot;CGI&quot}},&quot;i&quot;:0}}]}" id="mwAcI">.mw-parser-output .side-box{margin:4px 0;box-sizing:border-box;border:1px solid #aaa;font-size:88%;line-height:1.25em;background-color:var(--background-color-interactive-subtle,#f8f9fa);color:inherit;display:flow-root}.mw-parser-output .infobox .side-box{font-size:100%}.mw-parser-output .side-box-abovebelow,.mw-parser-output .side-box-text{padding:0.25em 0.9em}.mw-parser-output .side-box-image{padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .side-box-imageright{padding:2px 0.9em 2px 0;text-align:center}@media(min-width:500px){.mw-parser-output .side-box-flex{display:flex;align-items:center}.mw-parser-output .side-box-text{flex:1;min-width:0}}@media(min-width:640px){.mw-parser-output .side-box{width:238px}.mw-parser-output .side-box-right{clear:right;float:right;margin-left:1em}.mw-parser-output .side-box-left{margin-right:1em}}</style><style data-mw-deduplicate="TemplateStyles:r1311551236" typeof="mw:Extension/templatestyles" about="#mwt39" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Sister project/styles.css&quot},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot}}">@media print{body.ns-0 .mw-parser-output .sistersitebox{display:none!important}}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sistersitebox img[src*="Wiktionary-logo-en-v2.svg"]{filter:invert(1)brightness(55%)contrast(250%)hue-rotate(180deg)}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sistersitebox img[src*="Wiktionary-logo-en-v2.svg"]{filter:invert(1)brightness(55%)contrast(250%)hue-rotate(180deg)}}</style><div class="side-box side-box-right plainlinks sistersitebox" about="#mwt39" id="mwAcM"><style data-mw-deduplicate="TemplateStyles:r1126788409" typeof="mw:Extension/templatestyles" about="#mwt42" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Plainlist/styles.css&quot},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot}}">.mw-parser-output .plainlist ol,.mw-parser-output .plainlist ul{line-height:inherit;list-style:none;margin:0;padding:0}.mw-parser-output .plainlist ol li,.mw-parser-output .plainlist ul li{margin-bottom:0}</style><div class="side-box-flex"><div class="side-box-image"><span class="noviewer" typeof="mw:File"> <a onclick="showImg(this)" id="Wikibooks-logo-en-noslogan.svg" class="mw-file-description"><img alt="Wikibooks-logo-en-noslogan.svg" resource="./File:Wikibooks-logo-en-noslogan.svg" src="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/40px-Wikibooks-logo-en-noslogan.svg.png" decoding="async" data-file-width="400" data-file-height="400" data-file-type="drawing" height="40" width="40" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/60px-Wikibooks-logo-en-noslogan.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/120px-Wikibooks-logo-en-noslogan.svg.png 2x" class="mw-file-element"/></a> </span></div><div class="side-box-text plainlist">The Wikibook <i> <a rel="mw:WikiLink/Interwiki" href="https://en.wikibooks.org/wiki/Perl%20Programming" title="wikibooks:Perl Programming" class="extiw">Perl Programming</a> </i> has a page on the topic of: <i><b> <a rel="mw:WikiLink/Interwiki" href="https://en.wikibooks.org/wiki/Perl%20Programming/CGI" title="wikibooks:Perl Programming/CGI" class="extiw">CGI</a> </b></i></div></div></div><ul id="mwAcQ"><li id="mwAcU"> <a rel="mw:ExtLink nofollow" href="https://metacpan.org/module/CGI" class="external text" id="mwAcY">CGI.pm</a> <span typeof="mw:Entity" id="mwAcc">&#8211;</span> at the <a rel="mw:WikiLink" href="./CPAN" title="CPAN" id="mwAcg">CPAN</a> </li></ul><link rel="mw:PageProp/Category" target="_blank" href="//en.wikipedia.org/wiki/Category:Perl_modules" id="mwAck"/><link rel="mw:PageProp/Category" target="_blank" href="//en.wikipedia.org/wiki/Category:Software_using_the_Artistic_license" id="mwAco"/><p id="mwAcs"><br id="mwAcw"/></p><style data-mw-deduplicate="TemplateStyles:r1271159938" typeof="mw:Extension/templatestyles mw:Transclusion" about="#mwt43" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Module:Article stub box/styles.css&quot},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot},&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;unix-stub&quot;,&quot;href&quot;:&quot;./Template:Unix-stub&quot},&quot;params&quot;:{},&quot;i&quot;:0}}]}" id="mwAc0">.mw-parser-output .asbox{position:relative;overflow:hidden}.mw-parser-output .asbox table{background:transparent}.mw-parser-output .asbox p{margin:0}.mw-parser-output .asbox p+p{margin-top:0.25em}.mw-parser-output .asbox-body{font-style:italic}.mw-parser-output .asbox-note{font-size:smaller}.mw-parser-output .asbox .navbar{position:absolute;top:-0.75em;right:1em;display:none}.mw-parser-output:not(p):not(.asbox)+style+.asbox,.mw-parser-output:not(p):not(.asbox)+link+.asbox{margin-top:3em}</style><div role="note" class="metadata plainlinks asbox stub" about="#mwt43" id="mwAc4"><table role="presentation"><tbody><tr class="noresize"><td><span typeof="mw:File"> <a onclick="showImg(this)" id="Poundexclam.svg" class="mw-file-description"><img alt="Poundexclam.svg" resource="./File:Poundexclam.svg" src="//upload.wikimedia.org/wikipedia/commons/thumb/1/13/Poundexclam.svg/40px-Poundexclam.svg.png" decoding="async" data-file-width="30" data-file-height="30" data-file-type="drawing" height="30" width="30" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/1/13/Poundexclam.svg/60px-Poundexclam.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/13/Poundexclam.svg/60px-Poundexclam.svg.png 2x" class="mw-file-element"/></a> </span></td><td><p class="asbox-body">This <a rel="mw:WikiLink" href="./Unix" title="Unix">Unix</a>-related article is a <a rel="mw:WikiLink" target="_blank" href="//en.wikipedia.org/wiki/Wikipedia:Stub" title="Wikipedia:Stub">stub</a>. You can help Wikipedia by <a rel="mw:ExtLink" href="//en.wikipedia.org/w/index.php?title=CGI.pm&amp;action=edit" class="external text">expanding it</a>.</p></td></tr></tbody></table><style data-mw-deduplicate="TemplateStyles:r1129693374" typeof="mw:Extension/templatestyles" about="#mwt45" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Hlist/styles.css&quot},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot}}">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:":"}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" &#183;";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol&gt;li{counter-increment:listitem}.mw-parser-output .hlist ol&gt;li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol&gt;li:first-child::before,.mw-parser-output .hlist dt ol&gt;li:first-child::before,.mw-parser-output .hlist li ol&gt;li:first-child::before{content:" ("counter(listitem)"\a0 "}</style><style data-mw-deduplicate="TemplateStyles:r1239400231" typeof="mw:Extension/templatestyles" about="#mwt46" data-mw="{&quot;name&quot;:&quot;templatestyles&quot;,&quot;attrs&quot;:{&quot;src&quot;:&quot;Module:Navbar/styles.css&quot},&quot;body&quot;:{&quot;extsrc&quot;:&quot;&quot}}">.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a&gt;span,.mw-parser-output .navbar a&gt;abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}</style><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"> <a rel="mw:WikiLink" class="new" data-href="//en.wikipedia.org/wiki/Template:Unix-stub" title="Template:Unix-stub"><abbr title="View this template">v</abbr></a> </li><li class="nv-talk"> <a rel="mw:WikiLink" href="./Template_talk:Unix-stub" title="Template talk:Unix-stub"><abbr title="Discuss this template">t</abbr></a> </li><li class="nv-edit"> <a rel="mw:WikiLink" target="_blank" href="//en.wikipedia.org/wiki/Special:EditPage/Template:Unix-stub" title="Special:EditPage/Template:Unix-stub"><abbr title="Edit this template">e</abbr></a> </li></ul></div><link rel="mw:PageProp/Category" target="_blank" href="//en.wikipedia.org/wiki/Category:All_stub_articles"/><link rel="mw:PageProp/Category" target="_blank" href="//en.wikipedia.org/wiki/Category:Unix_stubs"/></div></section><div class="ref-link">This page is based on this <a target="_blank" href="//en.wikipedia.org/wiki/CGI.pm">Wikipedia article</a> <br>Text is available under the <a href="//creativecommons.org/licenses/by-sa/4.0/" target="_blank">CC BY-SA 4.0</a> license; additional terms may apply.<br>Images, videos and audio are available under their respective licenses.</div></body></html>