Changes
From Biolecture.org
Perl
,no edit summary
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">In addition to CGI, Perl 5 is used for <a href="http://en.wikipedia.org/wiki/Computer_graphics_(computer_science)" title="Computer graphics (computer science)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">graphics programming</a>, <a href="http://en.wikipedia.org/wiki/System_administrator" title="System administrator" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">system administration</a>, <a href="http://en.wikipedia.org/wiki/Computer_network_programming" title="Computer network programming" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">network programming</a>, finance,<a href="http://en.wikipedia.org/wiki/Bioinformatics" title="Bioinformatics" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">bioinformatics</a>, and other applications. It has been nicknamed "the Swiss Army chainsaw of scripting languages" because of its flexibility and power,<sup id="cite_ref-14" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-14" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[14]</a></sup> and possibly also because of its "ugliness".<sup id="cite_ref-15" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-15" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[15]</a></sup> In 1998, it was also referred to as the "<a href="http://en.wikipedia.org/wiki/Duct_tape" title="Duct tape" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">duct tape</a> that holds the Internet together", in reference to both its ubiquitous use as a <a href="http://en.wikipedia.org/wiki/Glue_language" title="Glue language" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">glue language</a> and its perceived inelegance.<sup id="cite_ref-leonard98_16-0" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-leonard98-16" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[16]</a></sup></p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;"> </p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;"><a href="http://en.wikipedia.org/wiki/Larry_Wall" title="Larry Wall" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Larry Wall</a> began work on Perl in 1987, while working as a programmer at <a href="http://en.wikipedia.org/wiki/Unisys" title="Unisys" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Unisys</a>,<sup id="cite_ref-programmingperl_9-1" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-programmingperl-9" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[9]</a></sup> and released version 1.0 to the comp.sources.misc <a href="http://en.wikipedia.org/wiki/Newsgroup" title="Newsgroup" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">newsgroup</a> on December 18, 1987.<sup id="cite_ref-17" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-17" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[17]</a></sup>The language expanded rapidly over the next few years.</p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Perl 2, released in 1988, featured a better regular expression engine. Perl 3, released in 1989, added support for <a href="http://en.wikipedia.org/wiki/Binary_data" title="Binary data" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">binary data</a> streams.</p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Originally the only documentation for Perl was a single (increasingly lengthy) <a href="http://en.wikipedia.org/wiki/Man_page" title="Man page" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">man page</a>. In 1991, <i><a href="http://en.wikipedia.org/wiki/Programming_Perl" title="Programming Perl" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Programming Perl</a></i>, known to many Perl programmers as the "Camel Book" because of its cover, was published and became the <i>de facto</i> reference for the language. At the same time, the Perl version number was bumped to 4, not to mark a major change in the language but to identify the version that was well documented by the book.</p>
<h3 style="margin: 0.3em 0px 0px; overflow: hidden; padding-top: 0.5em; padding-bottom: 0px; border-bottom-style: none; line-height: 1.6; font-family: sans-serif; background-image: none; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span class="mw-headline" id="Early_Perl_5">Early Perl 5</span><span class="mw-editsection" style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; unicode-bidi: -webkit-isolate;"><span class="mw-editsection-bracket" style="margin-right: 0px; color: rgb(85, 85, 85); margin-left: 0px;">[</span><a href="http://en.wikipedia.org/w/index.php?title=Perl&action=edit&section=3" title="Edit section: Early Perl 5" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">edit</a><span class="mw-editsection-bracket" style="margin-left: 0px; color: rgb(85, 85, 85); margin-right: 0px;">]</span></span></h3>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Perl 4 went through a series of <a href="http://en.wikipedia.org/wiki/Maintenance_release" title="Maintenance release" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">maintenance releases</a>, culminating in Perl 4.036 in 1993. At that point, Wall abandoned Perl 4 to begin work on Perl 5. Initial design of Perl 5 continued into 1994. The <i>perl5-porters</i> <a href="http://en.wikipedia.org/wiki/Mailing_list" title="Mailing list" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">mailing list</a> was established in May 1994 to coordinate work on porting Perl 5 to different platforms. It remains the primary forum for development, maintenance, and porting of Perl 5.<sup id="cite_ref-18" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-18" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[18]</a></sup></p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Perl 5.000 was released on October 17, 1994.<sup id="cite_ref-19" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-19" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[19]</a></sup> It was a nearly complete rewrite of the <a href="http://en.wikipedia.org/wiki/Interpreter_(computing)" title="Interpreter (computing)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">interpreter</a>, and it added many new features to the language, including <a href="http://en.wikipedia.org/wiki/Object_(computer_science)" title="Object (computer science)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">objects</a>,<a href="http://en.wikipedia.org/wiki/Reference_(computer_science)" title="Reference (computer science)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">references</a>, <a href="http://en.wikipedia.org/wiki/Local_variable" title="Local variable" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">lexical (my) variables</a>, and <a href="http://en.wikipedia.org/wiki/Module_(programming)" title="Module (programming)" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">modules</a>. Importantly, modules provided a mechanism for extending the language without modifying the interpreter. This allowed the core interpreter to stabilize, even as it enabled ordinary Perl programmers to add new language features. Perl 5 has been in active development since then.</p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Perl is also now supported running under <a href="http://en.wikipedia.org/wiki/Microsoft_Windows" title="Microsoft Windows" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Microsoft Windows</a> and several other operating systems.<sup id="cite_ref-5004delta_21-1" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-5004delta-21" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[21]</a></sup></p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Perl 5.005 was released on July 22, 1998. This release included several enhancements to the <a href="http://en.wikipedia.org/wiki/Regular_expression" title="Regular expression" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">regex</a> engine, new hooks into the backend through the <code style="font-family: monospace, Courier; color: black; border: 1px solid rgb(221, 221, 221); border-radius: 2px; padding: 1px 4px; background-color: rgb(249, 249, 249);">B::*</code> modules, the<code style="font-family: monospace, Courier; color: black; border: 1px solid rgb(221, 221, 221); border-radius: 2px; padding: 1px 4px; background-color: rgb(249, 249, 249);">qr//</code> regex quote operator, a large selection of other new core modules, and added support for several more operating systems, including <a href="http://en.wikipedia.org/wiki/BeOS" title="BeOS" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">BeOS</a>.<sup id="cite_ref-5005delta_23-0" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-5005delta-23" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[23]</a></sup></p>
<h3 style="margin: 0.3em 0px 0px; overflow: hidden; padding-top: 0.5em; padding-bottom: 0px; border-bottom-style: none; line-height: 1.6; font-family: sans-serif; background-image: none; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span class="mw-headline" id="2000.E2.80.93present">2000–present</span><span class="mw-editsection" style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; unicode-bidi: -webkit-isolate;"><span class="mw-editsection-bracket" style="margin-right: 0px; color: rgb(85, 85, 85); margin-left: 0px;">[</span><a href="http://en.wikipedia.org/w/index.php?title=Perl&action=edit&section=4" title="Edit section: 2000–present" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">edit</a><span class="mw-editsection-bracket" style="margin-left: 0px; color: rgb(85, 85, 85); margin-right: 0px;">]</span></span></h3>
<table class="wikitable floatright" style="font-size: 14px; margin: 0px 0px 0.5em 0.5em; border: 0px; border-collapse: collapse; color: black; clear: right; float: right; position: relative; font-family: sans-serif; line-height: 17.9200000762939px; background-color: rgb(249, 249, 249);">
<tbody>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Some observers credit the release of Perl 5.10 with the start of the Modern Perl movement.<sup id="cite_ref-38" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-38" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[38]</a></sup> In particular, this phrase describes a style of development that embraces the use of the CPAN, takes advantage of recent developments in the language, and is rigorous about creating high quality code.<sup id="cite_ref-39" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-39" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[39]</a></sup> While the book "Modern Perl"<sup id="cite_ref-40" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-40" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[40]</a></sup> may be the most visible standard-bearer of this idea, other groups such as the Enlightened Perl Organization<sup id="cite_ref-41" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-41" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[41]</a></sup> have taken up the cause.</p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">In late 2012 and 2013 several projects for alternative implementations for Perl 5 started: Perl5 in <a href="http://en.wikipedia.org/wiki/Perl6" title="Perl6" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Perl6</a> by the Rakudo Perl team,<sup id="cite_ref-42" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-42" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[42]</a></sup> <i>moe</i> by Stevan Little and friends,<sup id="cite_ref-43" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-43" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[43]</a></sup><i>p2</i><sup id="cite_ref-44" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-44" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[44]</a></sup> by the Perl11 team under Reini Urban, <i>gperl</i> by goccy,<sup id="cite_ref-45" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-45" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[45]</a></sup> and <i>rperl</i> a kickstarter project led by Will Braswell and affiliated with the Perll11 project.<sup id="cite_ref-46" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-46" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[46]</a></sup></p>
<h3 style="margin: 0.3em 0px 0px; overflow: hidden; padding-top: 0.5em; padding-bottom: 0px; border-bottom-style: none; line-height: 1.6; font-family: sans-serif; background-image: none; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span class="mw-headline" id="Name">Name</span><span class="mw-editsection" style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; unicode-bidi: -webkit-isolate;"><span class="mw-editsection-bracket" style="margin-right: 0px; color: rgb(85, 85, 85); margin-left: 0px;">[</span><a href="http://en.wikipedia.org/w/index.php?title=Perl&action=edit&section=5" title="Edit section: Name" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">edit</a><span class="mw-editsection-bracket" style="margin-left: 0px; color: rgb(85, 85, 85); margin-right: 0px;">]</span></span></h3>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Perl was originally named "Pearl". Wall wanted to give the language a short name with positive connotations; he claims that he considered (and rejected) every three- and four-letter word in the dictionary. He also considered naming it after his wife Gloria. Wall discovered the existing <a href="http://en.wikipedia.org/wiki/PEARL_(programming_language)" title="PEARL (programming language)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">PEARL</a> programming language before Perl's official release and changed the spelling of the name.<sup id="cite_ref-richardson1999_47-0" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-richardson1999-47" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[47]</a></sup></p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">When referring to the language, the name is normally capitalized (<i>Perl</i>) as a proper noun. When referring to the interpreter program itself, the name is often uncapitalized (<i>perl</i>) because most Unix-like file systems are case-sensitive. Before the release of the first edition of <i>Programming Perl</i>, it was common to refer to the language as <i>perl</i>;<a href="http://en.wikipedia.org/wiki/Randal_L._Schwartz" title="Randal L. Schwartz" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Randal L. Schwartz</a>, however, capitalized the language's name in the book to make it stand out better when typeset. This case distinction was subsequently documented as canonical.<sup id="cite_ref-capitalization_48-0" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-capitalization-48" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[48]</a></sup></p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">The name is occasionally expanded as <i>Practical Extraction and Report Language</i>, but this is a <a href="http://en.wikipedia.org/wiki/Backronym" title="Backronym" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">backronym</a>.<sup id="cite_ref-49" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-49" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[49]</a></sup> Other expansions have been suggested as equally canonical, including Wall's own humorous <i>Pathologically Eclectic Rubbish Lister</i>.<sup id="cite_ref-50" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-50" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[50]</a></sup> Indeed, Wall claims that the name was intended to inspire many different expansions.<sup id="cite_ref-51" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-51" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[51]</a></sup></p>
<h3 style="margin: 0.3em 0px 0px; overflow: hidden; padding-top: 0.5em; padding-bottom: 0px; border-bottom-style: none; line-height: 1.6; font-family: sans-serif; background-image: none; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span class="mw-headline" id="Camel_symbol">Camel symbol</span><span class="mw-editsection" style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; unicode-bidi: -webkit-isolate;"><span class="mw-editsection-bracket" style="margin-right: 0px; color: rgb(85, 85, 85); margin-left: 0px;">[</span><a href="http://en.wikipedia.org/w/index.php?title=Perl&action=edit&section=6" title="Edit section: Camel symbol" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">edit</a><span class="mw-editsection-bracket" style="margin-left: 0px; color: rgb(85, 85, 85); margin-right: 0px;">]</span></span></h3>
<div class="thumb tright" style="clear: right; float: right; margin: 0.5em 0px 1.3em 1.4em; width: auto; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px; line-height: 17.9200000762939px;">
<div class="thumbinner" style="min-width: 100px; border: 1px solid rgb(204, 204, 204); padding: 3px; font-size: 13.1600008010864px; text-align: center; overflow: hidden; width: 146px; background-color: rgb(249, 249, 249);"><a href="http://en.wikipedia.org/wiki/File:Perl-camel-small.png" class="image" style="text-decoration: none; color: rgb(11, 0, 128); background: none;"><img alt="" src="http://upload.wikimedia.org/wikipedia/en/0/00/Perl-camel-small.png" width="144" height="149" class="thumbimage" data-file-width="144" data-file-height="149" style="border: 1px solid rgb(204, 204, 204); vertical-align: middle; background-color: rgb(255, 255, 255);" /></a>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;"><i>Programming Perl</i>, published by <a href="http://en.wikipedia.org/wiki/O%27Reilly_Media" title="O'Reilly Media" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">O'Reilly Media</a>, features a picture of a <a href="http://en.wikipedia.org/wiki/Camel" title="Camel" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">dromedary camel</a> on the cover and is commonly called the "Camel Book".<sup id="cite_ref-schwartz01_52-0" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-schwartz01-52" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[52]</a></sup> This image of a camel has become an unofficial symbol of Perl as well as a general <a href="http://en.wikipedia.org/wiki/Hacker_(programmer_subculture)" title="Hacker (programmer subculture)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">hacker</a> emblem, appearing on T-shirts and other clothing items.</p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">O'Reilly owns the image as a <a href="http://en.wikipedia.org/wiki/Trademark" title="Trademark" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">trademark</a> but licenses it for <a href="http://en.wikipedia.org/wiki/Non-commercial" title="Non-commercial" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">non-commercial</a> use, requiring only an acknowledgement and a link to www.perl.com. Licensing for commercial use is decided on a case by case basis.<sup id="cite_ref-camel_53-0" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-camel-53" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[53]</a></sup> O'Reilly also provides "Programming Republic of Perl" logos for non-commercial sites and "Powered by Perl" buttons for any site that uses Perl.<sup id="cite_ref-camel_53-1" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-camel-53" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[53]</a></sup></p>
<h3 style="margin: 0.3em 0px 0px; overflow: hidden; padding-top: 0.5em; padding-bottom: 0px; border-bottom-style: none; line-height: 1.6; font-family: sans-serif; background-image: none; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span class="mw-headline" id="Onion_symbol">Onion symbol</span><span class="mw-editsection" style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; unicode-bidi: -webkit-isolate;"><span class="mw-editsection-bracket" style="margin-right: 0px; color: rgb(85, 85, 85); margin-left: 0px;">[</span><a href="http://en.wikipedia.org/w/index.php?title=Perl&action=edit&section=7" title="Edit section: Onion symbol" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">edit</a><span class="mw-editsection-bracket" style="margin-left: 0px; color: rgb(85, 85, 85); margin-right: 0px;">]</span></span></h3>
<div class="thumb tright" style="clear: right; float: right; margin: 0.5em 0px 1.3em 1.4em; width: auto; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px; line-height: 17.9200000762939px;">
<div class="thumbinner" style="min-width: 100px; border: 1px solid rgb(204, 204, 204); padding: 3px; font-size: 13.1600008010864px; text-align: center; overflow: hidden; width: 66px; background-color: rgb(249, 249, 249);"><a href="http://en.wikipedia.org/wiki/File:Onion_64x64.png" class="image" style="text-decoration: none; color: rgb(11, 0, 128); background: none;"><img alt="" src="http://upload.wikimedia.org/wikipedia/en/a/a4/Onion_64x64.png" width="64" height="64" class="thumbimage" data-file-width="64" data-file-height="64" style="border: 1px solid rgb(204, 204, 204); vertical-align: middle; background-color: rgb(255, 255, 255);" /></a>
</div>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;"><a href="http://en.wikipedia.org/wiki/The_Perl_Foundation" title="The Perl Foundation" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">The Perl Foundation</a> owns an alternative symbol, an onion, which it licenses to its subsidiaries, <a href="http://en.wikipedia.org/wiki/Perl_Mongers" title="Perl Mongers" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Perl Mongers</a>, <a href="http://en.wikipedia.org/wiki/PerlMonks" title="PerlMonks" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">PerlMonks</a>, Perl.org, and others.<sup id="cite_ref-onion_54-0" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-onion-54" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[54]</a></sup>The symbol is a <a href="http://en.wikipedia.org/wiki/Visual_pun" title="Visual pun" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">visual pun</a> on <a href="http://en.wikipedia.org/wiki/Pearl_onion" title="Pearl onion" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">pearl onion</a>.<sup id="cite_ref-gillmore98_55-0" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-gillmore98-55" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[55]</a></sup></p>
<h2 style="font-weight: normal; margin: 1em 0px 0.25em; overflow: hidden; padding: 0px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(170, 170, 170); font-family: 'Linux Libertine', Georgia, Times, serif; line-height: 1.3; background-image: none; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span class="mw-headline" id="Overview">Overview</span><span class="mw-editsection" style="-webkit-user-select: none; font-size: small; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; unicode-bidi: -webkit-isolate; font-family: sans-serif;"><span class="mw-editsection-bracket" style="margin-right: 0px; color: rgb(85, 85, 85); margin-left: 0px;">[</span><a href="http://en.wikipedia.org/w/index.php?title=Perl&action=edit&section=8" title="Edit section: Overview" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">edit</a><span class="mw-editsection-bracket" style="margin-left: 0px; color: rgb(85, 85, 85); margin-right: 0px;">]</span></span></h2>
<div class="hatnote relarticle mainarticle" style="font-style: italic; padding-left: 1.6em; margin-bottom: 0.5em; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px; line-height: 17.9200000762939px;">Main article: <a href="http://en.wikipedia.org/wiki/Perl_language_structure" title="Perl language structure" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Perl language structure</a></div>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">According to Wall, Perl has two slogans. The first is "<a href="http://en.wikipedia.org/wiki/There%27s_more_than_one_way_to_do_it" title="There's more than one way to do it" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">There's more than one way to do it</a>", commonly known as TMTOWTDI. The second slogan is "Easy things should be easy and hard things should be possible".<sup id="cite_ref-programmingperl_9-2" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-programmingperl-9" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[9]</a></sup></p>
<h3 style="margin: 0.3em 0px 0px; overflow: hidden; padding-top: 0.5em; padding-bottom: 0px; border-bottom-style: none; line-height: 1.6; font-family: sans-serif; background-image: none; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span class="mw-headline" id="Features">Features</span><span class="mw-editsection" style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; unicode-bidi: -webkit-isolate;"><span class="mw-editsection-bracket" style="margin-right: 0px; color: rgb(85, 85, 85); margin-left: 0px;">[</span><a href="http://en.wikipedia.org/w/index.php?title=Perl&action=edit&section=9" title="Edit section: Features" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">edit</a><span class="mw-editsection-bracket" style="margin-left: 0px; color: rgb(85, 85, 85); margin-right: 0px;">]</span></span></h3>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">The overall structure of Perl derives broadly from C. Perl is <a href="http://en.wikipedia.org/wiki/Procedural_programming" title="Procedural programming" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">procedural</a> in nature, with <a href="http://en.wikipedia.org/wiki/Variable_(programming)" title="Variable (programming)" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">variables</a>, <a href="http://en.wikipedia.org/wiki/Expression_(programming)" title="Expression (programming)" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">expressions</a>, <a href="http://en.wikipedia.org/wiki/Assignment_statement" title="Assignment statement" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">assignment statements</a>, <a href="http://en.wikipedia.org/wiki/Bracket" title="Bracket" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">brace</a>-delimited <a href="http://en.wikipedia.org/wiki/Block_(programming)" title="Block (programming)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">blocks</a>, <a href="http://en.wikipedia.org/wiki/Control_structure" title="Control structure" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">control structures</a>, and <a href="http://en.wikipedia.org/wiki/Subroutine" title="Subroutine" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">subroutines</a>.</p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Perl also takes features from shell programming. All variables are marked with leading <a href="http://en.wikipedia.org/wiki/Sigil_(computer_programming)" title="Sigil (computer programming)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">sigils</a>, which allow variables to be <a href="http://en.wikipedia.org/wiki/Variable_interpolation" title="Variable interpolation" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">interpolated</a> directly into <a href="http://en.wikipedia.org/wiki/String_(computer_science)" title="String (computer science)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">strings</a>. However, unlike the shell, Perl uses sigils on all accesses to variables, and unlike most other programming languages that use sigils, the sigil doesn't denote the type of the variable but the type of the expression. So for example, to access a list of values in a <a href="http://en.wikipedia.org/wiki/Associative_array" title="Associative array" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">hash</a>, the sigil for an <a href="http://en.wikipedia.org/wiki/Array_data_type" title="Array data type" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">array</a> ("@") is used, not the sigil for a hash ("%"). Perl also has many built-in functions that provide tools often used in shell programming (although many of these tools are implemented by programs external to the shell) such as <a href="http://en.wikipedia.org/wiki/Ascending_order" title="Ascending order" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">sorting</a>, and calling on<a href="http://en.wikipedia.org/wiki/Operating_system" title="Operating system" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">operating system</a> facilities.</p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Perl 5 added features that support complex <a href="http://en.wikipedia.org/wiki/Data_structure" title="Data structure" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">data structures</a>, <a href="http://en.wikipedia.org/wiki/First-class_function" title="First-class function" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">first-class functions</a> (that is, <a href="http://en.wikipedia.org/wiki/Closure_(computer_science)" title="Closure (computer science)" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">closures</a> as values), and an object-oriented programming model. These include<a href="http://en.wikipedia.org/wiki/Reference_(computer_science)" title="Reference (computer science)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">references</a>, packages, class-based <a href="http://en.wikipedia.org/wiki/Dynamic_dispatch" title="Dynamic dispatch" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">method dispatch</a>, and <a href="http://en.wikipedia.org/wiki/Scope_(programming)" title="Scope (programming)" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">lexically scoped variables</a>, along with <a href="http://en.wikipedia.org/wiki/Compiler_directive" title="Compiler directive" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">compiler directives</a> (for example, the <code style="font-family: monospace, Courier; color: black; border: 1px solid rgb(221, 221, 221); border-radius: 2px; padding: 1px 4px; background-color: rgb(249, 249, 249);">strict</code> pragma). A major additional feature introduced with Perl 5 was the ability to package code as reusable modules. Wall later stated that "The whole intent of Perl 5's module system was to encourage the growth of Perl culture rather than the Perl core."<sup id="cite_ref-56" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-56" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[56]</a></sup></p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">All versions of Perl do automatic <a href="http://en.wikipedia.org/wiki/Type_system" title="Type system" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">data-typing</a> and automatic <a href="http://en.wikipedia.org/wiki/Memory_management" title="Memory management" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">memory management</a>. The interpreter knows the type and <a href="http://en.wikipedia.org/wiki/Computer_data_storage" title="Computer data storage" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">storage</a> requirements of every data object in the program; it allocates and frees storage for them as necessary using <a href="http://en.wikipedia.org/wiki/Reference_counting" title="Reference counting" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">reference counting</a> (so it cannot deallocate <a href="http://en.wikipedia.org/wiki/Circular_buffer" title="Circular buffer" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">circular data structures</a> without manual intervention). Legal<a href="http://en.wikipedia.org/wiki/Type_conversion" title="Type conversion" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">type conversions</a> — for example, conversions from number to string — are done automatically at <a href="http://en.wikipedia.org/wiki/Run_time_(program_lifecycle_phase)" title="Run time (program lifecycle phase)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">run time</a>; illegal type conversions are fatal errors.</p>
<h3 style="margin: 0.3em 0px 0px; overflow: hidden; padding-top: 0.5em; padding-bottom: 0px; border-bottom-style: none; line-height: 1.6; font-family: sans-serif; background-image: none; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span class="mw-headline" id="Design">Design</span><span class="mw-editsection" style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; unicode-bidi: -webkit-isolate;"><span class="mw-editsection-bracket" style="margin-right: 0px; color: rgb(85, 85, 85); margin-left: 0px;">[</span><a href="http://en.wikipedia.org/w/index.php?title=Perl&action=edit&section=10" title="Edit section: Design" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">edit</a><span class="mw-editsection-bracket" style="margin-left: 0px; color: rgb(85, 85, 85); margin-right: 0px;">]</span></span></h3>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">The design of Perl can be understood as a response to three broad trends in the computer industry: falling hardware costs, rising labor costs, and improvements in <a href="http://en.wikipedia.org/wiki/Compiler" title="Compiler" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">compiler</a>technology. Many earlier computer languages, such as <a href="http://en.wikipedia.org/wiki/Fortran" title="Fortran" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Fortran</a> and C, aimed to make efficient use of expensive computer hardware. In contrast, Perl was designed so that computer programmers could write programs more quickly and easily.</p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Perl has many features that ease the task of the programmer at the expense of greater <a href="http://en.wikipedia.org/wiki/CPU" title="CPU" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">CPU</a> and memory requirements. These include automatic memory management;<a href="http://en.wikipedia.org/wiki/Dynamic_typing" title="Dynamic typing" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">dynamic typing</a>; strings, lists, and hashes; regular expressions; introspection; and an <code style="font-family: monospace, Courier; color: black; border: 1px solid rgb(221, 221, 221); border-radius: 2px; padding: 1px 4px; background-color: rgb(249, 249, 249);">eval()</code> function. Perl follows the theory of "no built-in limits",<sup id="cite_ref-schwartz01_52-1" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-schwartz01-52" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[52]</a></sup> an idea similar to the<a href="http://en.wikipedia.org/wiki/Zero_One_Infinity" title="Zero One Infinity" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Zero One Infinity</a> rule.</p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">There is a broad practical bent to both the Perl language and the community and culture that surround it. The preface to <i>Programming Perl</i> begins: "Perl is a language for getting your job done."<sup id="cite_ref-programmingperl_9-3" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-programmingperl-9" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[9]</a></sup> One consequence of this is that Perl is not a tidy language. It includes many features, tolerates exceptions to its rules, and employs <a href="http://en.wikipedia.org/wiki/Heuristics" title="Heuristics" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">heuristics</a> to resolve syntactical ambiguities. Because of the forgiving nature of the compiler, bugs can sometimes be hard to find. Perl's function documentation remarks on the variant behavior of built-in functions in list and scalar contexts by saying, "In general, they do what you want, unless you want consistency."<sup id="cite_ref-perlfunc_58-0" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-perlfunc-58" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[58]</a></sup></p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">No written <a href="http://en.wikipedia.org/wiki/Formal_specification" title="Formal specification" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">specification</a> or standard for the Perl language exists for Perl versions through Perl 5, and there are no plans to create one for the current version of Perl. There has been only one implementation of the interpreter, and the language has evolved along with it. That interpreter, together with its functional tests, stands as a <i>de facto</i>specification of the language. <a href="http://en.wikipedia.org/wiki/Perl_6" title="Perl 6" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Perl 6</a>, however, started with a specification,<sup id="cite_ref-59" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-59" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[59]</a></sup> and several projects<sup id="cite_ref-60" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-60" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[60]</a></sup> aim to implement some or all of the specification.</p>
<h3 style="margin: 0.3em 0px 0px; overflow: hidden; padding-top: 0.5em; padding-bottom: 0px; border-bottom-style: none; line-height: 1.6; font-family: sans-serif; background-image: none; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span class="mw-headline" id="Applications">Applications</span><span class="mw-editsection" style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; unicode-bidi: -webkit-isolate;"><span class="mw-editsection-bracket" style="margin-right: 0px; color: rgb(85, 85, 85); margin-left: 0px;">[</span><a href="http://en.wikipedia.org/w/index.php?title=Perl&action=edit&section=11" title="Edit section: Applications" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">edit</a><span class="mw-editsection-bracket" style="margin-left: 0px; color: rgb(85, 85, 85); margin-right: 0px;">]</span></span></h3>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Perl has many and varied applications, compounded by the availability of many standard and third-party modules.</p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Perl has chiefly been used to write <a href="http://en.wikipedia.org/wiki/Common_Gateway_Interface" title="Common Gateway Interface" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">CGI</a> scripts: large projects written in Perl include <a href="http://en.wikipedia.org/wiki/CPanel" title="CPanel" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">cPanel</a>, <a href="http://en.wikipedia.org/wiki/Slash_(weblog_system)" title="Slash (weblog system)" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Slash</a>, <a href="http://en.wikipedia.org/wiki/Bugzilla" title="Bugzilla" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Bugzilla</a>, <a href="http://en.wikipedia.org/wiki/Request_Tracker" title="Request Tracker" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">RT</a>, <a href="http://en.wikipedia.org/wiki/TWiki" title="TWiki" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">TWiki</a>, and <a href="http://en.wikipedia.org/wiki/Movable_Type" title="Movable Type" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Movable Type</a>; high-traffic websites that use Perl extensively include <a href="http://en.wikipedia.org/wiki/Priceline.com" title="Priceline.com" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Priceline.com</a>, <a href="http://en.wikipedia.org/wiki/Craigslist" title="Craigslist" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Craigslist</a>,<sup id="cite_ref-61" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-61" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[61]</a></sup> <a href="http://en.wikipedia.org/wiki/Internet_Movie_Database" title="Internet Movie Database" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">IMDb</a>,<sup id="cite_ref-62" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-62" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[62]</a></sup> <a href="http://en.wikipedia.org/wiki/LiveJournal" title="LiveJournal" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">LiveJournal</a>, <a href="http://en.wikipedia.org/wiki/DuckDuckGo" title="DuckDuckGo" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">DuckDuckGo</a>,<sup id="cite_ref-63" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-63" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[63]</a></sup><sup id="cite_ref-64" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-64" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[64]</a></sup> <a href="http://en.wikipedia.org/wiki/Slashdot" title="Slashdot" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Slashdot</a> and <a href="http://en.wikipedia.org/wiki/Ticketmaster" title="Ticketmaster" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Ticketmaster</a>. It is also an optional component of the popular <a href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)" title="LAMP (software bundle)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">LAMP</a>technology stack for <a href="http://en.wikipedia.org/wiki/Web_development" title="Web development" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Web development</a>, in lieu of <a href="http://en.wikipedia.org/wiki/PHP" title="PHP" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">PHP</a> or <a href="http://en.wikipedia.org/wiki/Python_(programming_language)" title="Python (programming language)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Python</a>.</p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Perl code can be made portable across <a href="http://en.wikipedia.org/wiki/Microsoft_Windows" title="Microsoft Windows" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Windows</a> and Unix; such code is often used by suppliers of software (both <a href="http://en.wikipedia.org/wiki/Commercial_off-the-shelf" title="Commercial off-the-shelf" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">COTS</a> and bespoke) to simplify packaging and maintenance of software build- and deployment-scripts.</p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;"><a href="http://en.wikipedia.org/wiki/Graphical_user_interface" title="Graphical user interface" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Graphical user interfaces</a> (GUIs) may be developed using Perl. For example, <a href="http://en.wikipedia.org/wiki/Tk_(framework)" title="Tk (framework)" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Perl/Tk</a> and <a href="http://en.wikipedia.org/wiki/WxPerl" title="WxPerl" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">WxPerl</a> are commonly used to enable user interaction with Perl scripts. Such interaction may be synchronous or asynchronous, using <a href="http://en.wikipedia.org/wiki/Callback_(computer_programming)" title="Callback (computer programming)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">callbacks</a> to update the GUI.</p>
<h3 style="margin: 0.3em 0px 0px; overflow: hidden; padding-top: 0.5em; padding-bottom: 0px; border-bottom-style: none; line-height: 1.6; font-family: sans-serif; background-image: none; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span class="mw-headline" id="Implementation">Implementation</span><span class="mw-editsection" style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; unicode-bidi: -webkit-isolate;"><span class="mw-editsection-bracket" style="margin-right: 0px; color: rgb(85, 85, 85); margin-left: 0px;">[</span><a href="http://en.wikipedia.org/w/index.php?title=Perl&action=edit&section=12" title="Edit section: Implementation" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">edit</a><span class="mw-editsection-bracket" style="margin-left: 0px; color: rgb(85, 85, 85); margin-right: 0px;">]</span></span></h3>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Perl is implemented as a core interpreter, written in C, together with a large collection of modules, written in Perl and C. As of 2010, the stable version (5.18.2) is 16.53 <a href="http://en.wikipedia.org/wiki/Megabyte" title="Megabyte" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">MB</a>when packaged in a <a href="http://en.wikipedia.org/wiki/Tar_(file_format)" title="Tar (file format)" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">tar file</a> and <a href="http://en.wikipedia.org/wiki/Gzip" title="Gzip" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">gzip</a> compressed.<sup id="cite_ref-66" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-66" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[66]</a></sup> The interpreter is 150,000 lines of C code and compiles to a 1 MB executable on typical machine architectures. Alternatively, the interpreter can be compiled to a link library and embedded in other programs. There are nearly 500 modules in the distribution, comprising 200,000 lines of Perl and an additional 350,000 lines of C code. (Much of the C code in the modules consists of <a href="http://en.wikipedia.org/wiki/Character_encoding" title="Character encoding" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">character encoding</a> tables.)</p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">The interpreter has an object-oriented architecture. All of the elements of the Perl language—scalars, arrays, hashes, coderefs, <a href="http://en.wikipedia.org/wiki/File_handle" title="File handle" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">file handles</a>—are represented in the interpreter by <a href="http://en.wikipedia.org/wiki/Struct_(C_programming_language)" title="Struct (C programming language)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">C structs</a>. Operations on these structs are defined by a large collection of <a href="http://en.wikipedia.org/wiki/Macro_(computer_science)" title="Macro (computer science)" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">macros</a>, <a href="http://en.wikipedia.org/wiki/Typedef" title="Typedef" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">typedefs</a>, and functions; these constitute the Perl C <a href="http://en.wikipedia.org/wiki/Application_programming_interface" title="Application programming interface" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">API</a>. The Perl API can be bewildering to the uninitiated, but its entry points follow a consistent <a href="http://en.wikipedia.org/wiki/Naming_scheme" title="Naming scheme" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">naming scheme</a>, which provides guidance to those who use it.</p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Other programs that undertake to parse Perl, such as <a href="http://en.wikipedia.org/wiki/Static_program_analysis" title="Static program analysis" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">source-code</a> analyzers and <a href="http://en.wikipedia.org/wiki/Indent_style" title="Indent style" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">auto-indenters</a>, have to contend not only with ambiguous <a href="http://en.wikipedia.org/wiki/Language_construct" title="Language construct" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">syntactic constructs</a> but also with the <a href="http://en.wikipedia.org/wiki/Recursive_language" title="Recursive language" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">undecidability</a> of Perl parsing in the general case. Adam Kennedy's PPI project focused on parsing Perl code as a document (retaining its integrity as a document), instead of parsing Perl as executable code (that not even Perl itself can always do). It was Kennedy who first conjectured that "parsing Perl suffers from the '<a href="http://en.wikipedia.org/wiki/Halting_problem" title="Halting problem" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">halting problem</a>'",<sup id="cite_ref-70" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-70" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[70]</a></sup> which was later proved.<sup id="cite_ref-71" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-71" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[71]</a></sup></p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Perl is distributed with over 250,000 <a href="http://en.wikipedia.org/wiki/Functional_testing" title="Functional testing" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">functional tests</a> for core Perl language and over 250,000 <a href="http://en.wikipedia.org/wiki/Functional_testing" title="Functional testing" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">functional tests</a> for core modules. These run as part of the normal build process and extensively exercise the interpreter and its core modules. Perl developers rely on the functional tests to ensure that changes to the interpreter do not introduce <a href="http://en.wikipedia.org/wiki/Software_bug" title="Software bug" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">software bugs</a>; additionally, Perl users who see that the interpreter passes its functional tests on their system can have a high degree of confidence that it is working properly.</p>
<h3 style="margin: 0.3em 0px 0px; overflow: hidden; padding-top: 0.5em; padding-bottom: 0px; border-bottom-style: none; line-height: 1.6; font-family: sans-serif; background-image: none; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span class="mw-headline" id="Availability">Availability</span><span class="mw-editsection" style="-webkit-user-select: none; font-size: small; font-weight: normal; margin-left: 1em; vertical-align: baseline; line-height: 1em; display: inline-block; white-space: nowrap; unicode-bidi: -webkit-isolate;"><span class="mw-editsection-bracket" style="margin-right: 0px; color: rgb(85, 85, 85); margin-left: 0px;">[</span><a href="http://en.wikipedia.org/w/index.php?title=Perl&action=edit&section=13" title="Edit section: Availability" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">edit</a><span class="mw-editsection-bracket" style="margin-left: 0px; color: rgb(85, 85, 85); margin-right: 0px;">]</span></span></h3>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Perl is <a href="http://en.wikipedia.org/wiki/Dual_licensed" title="Dual licensed" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">dual licensed</a> under both the <a href="http://en.wikipedia.org/wiki/Artistic_License" title="Artistic License" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Artistic License</a> and the <a href="http://en.wikipedia.org/wiki/GNU_General_Public_License" title="GNU General Public License" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">GNU General Public License</a>. Distributions are available for most <a href="http://en.wikipedia.org/wiki/Operating_system" title="Operating system" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">operating systems</a>. It is particularly prevalent on<a href="http://en.wikipedia.org/wiki/Unix" title="Unix" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Unix</a> and <a href="http://en.wikipedia.org/wiki/Unix-like" title="Unix-like" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Unix-like</a> systems, but it has been ported to most modern (and many obsolete) platforms. With only six reported exceptions, Perl can be compiled from <a href="http://en.wikipedia.org/wiki/Source_code" title="Source code" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">source code</a> on all <a href="http://en.wikipedia.org/wiki/POSIX" title="POSIX" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">POSIX</a>-compliant, or otherwise-Unix-compatible platforms.<sup id="cite_ref-cpanports_72-0" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-cpanports-72" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[72]</a></sup></p>
<p style="margin: 0.5em 0px; line-height: 17.9200000762939px; color: rgb(37, 37, 37); font-family: sans-serif; font-size: 14px;">Because of unusual changes required for the <a href="http://en.wikipedia.org/wiki/Mac_OS_history" title="Mac OS history" class="mw-redirect" style="text-decoration: none; color: rgb(11, 0, 128); background: none;">Mac OS Classic</a> environment, a special port called MacPerl was shipped independently.<sup id="cite_ref-macperl_73-0" class="reference" style="line-height: 1; unicode-bidi: -webkit-isolate; font-size: 11.1999998092651px;"><a href="http://en.wikipedia.org/wiki/Perl#cite_note-macperl-73" style="text-decoration: none; color: rgb(11, 0, 128); white-space: nowrap; background: none;">[73]</a></sup></p>