from
Jargon File (4.4.4, 14 Aug 2003)
Perl
/perl/, n.
[Practical Extraction and Report Language, a.k.a. Pathologically
Eclectic Rubbish Lister] An interpreted language developed by Larry
Wall, author of patch(1) and rn(1)). Superficially resembles {awk},
but is much hairier, including many facilities reminiscent of sed(1)
and shells and a comprehensive Unix system-call interface. Unix
sysadmins, who are almost always incorrigible hackers, generally
consider it one of the {languages of choice}, and it is by far the
most widely used tool for making `live' web pages via CGI. Perl has
been described, in a parody of a famous remark about lex(1), as the
{Swiss-Army chainsaw} of Unix programming. Though Perl is very useful,
it would be a stretch to describe it as pretty or {elegant}; people
who like clean, spare design generally prefer {Python}. See also
{Camel Book}, {TMTOWTDI}.
from
The Free On-line Dictionary of Computing (8 July 2008)
Perl
<language, tool> A {high-level} programming language, started
by {Larry Wall} in 1987 and developed as an {open source}
project. It has an eclectic heritage, deriving from the
ubiquitous {C} programming language and to a lesser extent
from {sed}, {awk}, various {Unix} {shell} languages, {Lisp},
and at least a dozen other tools and languages. Originally
developed for {Unix}, it is now available for many
{platforms}.
Perl's elaborate support for {regular expression} matching and
substitution has made it the {language of choice} for tasks
involving {string manipulation}, whether for text or binary
data. It is particularly popular for writing {CGI scripts}.
The language's highly flexible syntax and concise regular
expression operators, make densely written Perl code
indecipherable to the uninitiated. The syntax is, however,
really quite simple and powerful and, once the basics have
been mastered, a joy to write.
Perl's only {primitive} data type is the "scalar", which can
hold a number, a string, the undefined value, or a typed
reference. Perl's {aggregate} data types are {arrays}, which
are ordered lists of {scalars} indexed by {natural numbers},
and hashes (or "{associative arrays}") which are unordered
lists of scalars indexed by strings. A reference can point to
a scalar, array, hash, {function}, or {filehandle}. {Objects}
are implemented as references "{blessed}" with a {class} name.
Strings in Perl are {eight-bit clean}, including {nulls}, and
so can contain {binary data}.
Unlike C but like most Lisp dialects, Perl internally and
dynamically handles all memory allocation, {garbage
collection}, and type {coercion}.
Perl supports {closures}, {recursive functions}, {symbols}
with either {lexical scope} or {dynamic scope}, nested {data
structures} of arbitrary content and complexity (as lists or
hashes of references), and packages (which can serve as
classes, optionally inheriting {methods} from one or more
other classes). There is ongoing work on {threads},
{Unicode}, {exceptions}, and {backtracking}. Perl program
files can contain embedded documentation in {POD} (Plain Old
Documentation), a simple markup language.
The normal Perl distribution contains documentation for the
language, as well as over a hundred modules (program
libraries). Hundreds more are available from The
{Comprehensive Perl Archive Network}. Modules are themselves
generally written in Perl, but can be implemented as
interfaces to code in other languages, typically compiled C.
The free availability of modules for almost any conceivable
task, as well as the fact that Perl offers direct access to
almost all {system calls} and places no arbitrary limits on
data structure size or complexity, has led some to describe
Perl, in a parody of a famous remark about {lex}, as the
"Swiss Army chainsaw" of programming.
The use of Perl has grown significantly since its adoption as
the language of choice of many {World-Wide Web} developers.
{CGI} interfaces and libraries for Perl exist for several
{platforms} and Perl's speed and flexibility make it well
suited for form processing and on-the-fly {web page} creation.
Perl programs are generally stored as {text} {source} files,
which are compiled into {virtual machine} code at run time;
this, in combination with its rich variety of data types and
its common use as a glue language, makes Perl somewhat hard to
classify as either a "{scripting language}" or an
"{applications language}" -- see {Ousterhout's dichotomy}.
Perl programs are usually called "Perl scripts", if only for
historical reasons.
Version 5 was a major rewrite and enhancement of version 4,
released sometime before November 1993. It added real {data
structures} by way of "references", un-adorned {subroutine}
calls, and {method} {inheritance}.
The spelling "Perl" is preferred over the older "PERL" (even
though some explain the language's name as originating in the
acronym for "Practical Extraction and Report Language"). The
program that interprets/compiles Perl code is called
"perl", typically "/usr/local/bin/perl" or "/usr/bin/perl".
Latest version: 5.005_03 stable, 5.005_62 in development, as
of 1999-12-04.
(http://perl.com/).
Usenet newsgroups: news:comp.lang.perl.announce,
news:comp.lang.perl.misc.
["Programming Perl", Larry Wall and Randal L. Schwartz,
O'Reilly & Associates, Inc. Sebastopol, CA. ISBN
0-93715-64-1].
["Learning Perl" by Randal L. Schwartz, O'Reilly & Associates,
Inc., Sebastopol, CA].
[{Jargon File}]
(1999-12-04)