| Perl |
 | | Paradigm | Multi-paradigm | | Appeared in | 1987 | | Designed by | Larry Wall | | Latest release | 5.10.0/ December 18, 2007 (2007-12-18); 142 days ago | | Typing discipline | Dynamic | | Influenced by | AWK, BASIC, BASIC-PLUS, C, C++, Lisp, Pascal, sed, Unix shell | | Influenced | Python, PHP, Ruby, ECMAScript, Dao, Windows PowerShell | | OS | Cross-platform | | License | GNU General Public License, Artistic License | | Website | http://www.perl.org/ | Perl is a dynamic programming language created by Larry Wall and first released in 1987. Perl borrows features from a variety of other languages including C, shell scripting (sh), AWK, sed and Lisp.[1] Perl was widely adopted for its strengths in text processing and lack of the arbitrary limitations of many scripting languages at the time.[2] Look up perl in Wiktionary, the free dictionary. ...
Programming Republic of Perl logo This image is trademarked. ...
A programming paradigm is a paradigmatic style of programming (compare with a methodology, which is a paradigmatic style of doing software engineering). ...
A multiparadigm programming language is a programming language that supports more than one programming paradigm. ...
Larry Wall Larry Wall (born September 27, 1954) is a programmer, linguist, and author, most widely known for his creation of the Perl programming language in 1987. ...
A software release refers to the creation and availability of a new version of a computer software product. ...
is the 352nd day of the year (353rd in leap years) in the Gregorian calendar. ...
Year 2007 (MMVII) was a common year starting on Monday of the Gregorian calendar in the 21st century. ...
In computer science, a type system defines how a programming language classifies values and expressions into types, how it can manipulate those types and how they interact. ...
AWK is a general purpose computer language that is designed for processing text-based data, either in files or data streams. ...
This article is about the programming language. ...
Basic Plus (or Basic-Plus) was an extended dialect of the BASIC programming language developed by Digital Equipment Corporation (DEC) for use on its RSTS/E time_shared operating system for the PDP-11 series of 16-bit minicomputers in the early 1970s through the 1980s. ...
C is a general-purpose, block structured, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system. ...
C++ (pronounced ) is a general-purpose programming language. ...
âLISPâ redirects here. ...
Pascal is a structured imperative computer programming language, developed in 1970 by Niklaus Wirth as a language particularly suitable for structured programming. ...
The correct title of this article is . ...
Screenshot of a sample Bash session, taken on Gentoo Linux. ...
Python is a general-purpose, high-level programming language. ...
For other uses, see PHP (disambiguation). ...
Ruby is a reflective, dynamic, object-oriented programming language. ...
ECMAScript is a scripting programming language, standardized by Ecma International in the ECMA-262 specification. ...
Dao is an object-oriented scripting language with dynamically typed variables supporting complex data structures. ...
Windows PowerShell is an administration focused extensible command line interface (CLI) shell and scripting language product developed by Microsoft. ...
An operating system (OS) is a software that manages computer resources and provides programmers with an interface used to access those resources. ...
A cross-platform (or platform independent) programming language, software application or hardware device works on more than one system platform (e. ...
A software license is a legal agreement which may take the form of a proprietary or gratuitous license as well as a memorandum of contract between a producer and a user of computer software. ...
GPL redirects here. ...
The Artistic License is a software license used for certain free software packages, most notably the standard Perl implementation, most of CPAN modules and Parrot, which are dual-licensed under the Artistic License and the GNU General Public License (GPL). ...
A website (alternatively, web site or Web site) is a collection of Web pages, images, videos or other digital assets that is hosted on one or more web servers, usually accessible via the Internet. ...
Dynamic programming language is a term used broadly in computer science to describe a class of high level programming languages that execute at runtime many common behaviors that other languages might perform during compilation, if at all. ...
Larry Wall Larry Wall (born September 27, 1954) is a programmer, linguist, and author, most widely known for his creation of the Perl programming language in 1987. ...
C is a general-purpose, block structured, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system. ...
A shell script is a script written for the shell, or command line interpreter, of an operating system. ...
The Bourne shell, or sh, was the default Unix shell of Unix Version 7, and replaced the Thompson shell, whose executable file had the same name, sh. ...
AWK is a general purpose computer language that is designed for processing text-based data, either in files or data streams. ...
The correct title of this article is . ...
âLISPâ redirects here. ...
A scripting language, script language or extension language, is a programming language that controls software application. ...
History Larry Wall began work on Perl in 1987, while working as a programmer at Unisys,[3] and released version 1.0 to the comp.sources.misc newsgroup on December 18, 1987[4]. The language expanded rapidly over the next few years. Perl 2, released in 1988, featured a better regular expression engine. Perl 3, released in 1989, added support for binary data streams. Larry Wall Larry Wall (born September 27, 1954) is a programmer, linguist, and author, most widely known for his creation of the Perl programming language in 1987. ...
Unisys Corporation (NYSE: UIS), based in Blue Bell, Pennsylvania, United States, and incorporated in Delaware[3], is a global provider of information technology services and solutions. ...
A newsgroup is a repository usually within the Usenet system, for messages posted from many users at different locations. ...
is the 352nd day of the year (353rd in leap years) in the Gregorian calendar. ...
This article is about the year 1987. ...
In computing, a regular expression is a string that is used to describe or match a set of strings, according to certain syntax rules. ...
A Hexdump of a JPEG image. ...
Until 1991, the only documentation for Perl was a single (increasingly lengthy) man page. In 1991, Programming perl (known to many Perl programmers as the "Camel Book") was published, and became the de facto 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 documented by the book. The man page on man Almost all substantial UNIX and Unix-like operating systems have extensive documentation known as man pages (short for manual pages). The Unix command used to display them is man. ...
Programming Perl book cover Programming Perl, best known as the camel book among hackers, is a book about writing programs or scripts using the Perl programming language. ...
Perl 4 went through a series of maintenance releases, culminating in Perl 4.036 in 1993. At that point, Larry Wall abandoned Perl 4 to begin work on Perl 5. Initial design of Perl 5 continued into 1994. The perl5-porters mailing list 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.[5] A mailing list is a collection of names and addresses used by an individual or an organization to send material to multiple recipients. ...
Perl 5 was released on October 17, 1994. It was a nearly complete rewrite of the interpreter, and added many new features to the language, including objects, references, lexical (my) variables, and modules. 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. is the 290th day of the year (291st in leap years) in the Gregorian calendar. ...
Year 1994 (MCMXCIV) The year 1994 was designated as the International Year of the Family and the International Year of the Sport and the Olympic Ideal by the United Nations. ...
In computer science, an interpreter is a computer program that executes, or performs, instructions written in a computer programming language. ...
In computer science, a local variable is a variable that is given local scope. ...
As of 2007, Perl 5 is still being actively maintained. Important features and some essential new language constructs have been added along the way, including Unicode support, threads, improved support for object oriented programming and many other enhancements. 2007 is a common year starting on Monday of the Gregorian calendar. ...
The Unicode Standard, Version 5. ...
For the form of code consisting entirely of subroutine calls, see Threaded code. ...
Object-oriented programming (OOP) is a computer programming paradigm in which a software system is modeled as a set of objects that interact with each other. ...
On December 18, 2007, the 20th anniversary of Perl 1.0, Perl 5.10.0 was released. Perl 5.10.0 includes notable new features, which bring it closer to Perl 6, among them a new switch statement (called "given/when"), regular expressions updates, the "smart match operator" ~~, and more.[6] is the 352nd day of the year (353rd in leap years) in the Gregorian calendar. ...
Year 2007 (MMVII) was a common year starting on Monday of the Gregorian calendar in the 21st century. ...
Perl 6 is a planned major revision to the Perl programming language. ...
In computer programming, a switch statement is a type of control statement that exists in most modern imperative programming languages (e. ...
One of the most important events in Perl 5 history took place outside of the language proper, and was a consequence of its module support. On October 26, 1995, the Comprehensive Perl Archive Network (CPAN) was established as a repository for Perl modules and Perl itself. At the time of writing, it carries over 11,000 modules by over 5,000 authors. CPAN is widely regarded as one of the greatest strengths of Perl in practice. is the 299th day of the year (300th in leap years) in the Gregorian calendar. ...
Year 1995 (MCMXCV) was a common year starting on Sunday. ...
CPAN is an acronym standing for Comprehensive Perl Archive Network. ...
A repository is a central place where data is stored and maintained. ...
It has been suggested that this article or section be merged into Modularity (programming). ...
Name Perl was originally named "Pearl", after the Parable of the Pearl from the Gospel of Matthew. Larry 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 PEARL programming language before Perl's official release and changed the spelling of the name. Illustration of the Parable of the Pearl of Great Price, by John Everett Millais, from Parables of our Lord (1864) The Parable of the Pearl or the Pearl of Great Price is a parable told by Jesus in explaining the value of the Kingdom of Heaven, according to Matthew 13...
The Gospel of Matthew (literally, according to Matthew; Greek, ÎαÏά Îαθθαίον or ÎαÏά ÎαÏθαίον, Kata Maththaion or Kata Matthaion) is a synoptic gospel in the New Testament, one of four canonical gospels. ...
PEARL, or Process and Experiment Automation Realtime Language, is a computer programming language designed for multitasking and real-time programming. ...
The name is normally capitalized (Perl) when referring to the language and uncapitalized (perl) when referring to the interpreter program itself since Unix-like file systems are case-sensitive. Before the release of the first edition of Programming Perl, it was common to refer to the language as perl; Randal L. Schwartz, however, capitalised the language's name in the book to make it stand out better when typeset. The case distinction was subsequently adopted by the community.[7] Randal L. Schwartz Randal L. Schwartz (born November 22, 1961) is an American author, system administrator and programming consultant. ...
The name is occasionally given as "PERL" (for Practical Extraction and Report Language). Although the expansion has prevailed in many of today's manuals, including the official Perl man page, it is merely a backronym. The name does not officially stand for anything, so spelling it in all caps is incorrect. Proper capitalisation is considered a shibboleth (label of insiders) in the Perl community.[8] Several other expansions have been suggested, including Wall's own humorous Pathologically Eclectic Rubbish Lister.[9] Indeed, Wall claims that the name was intended to inspire many different expansions.[10] The man page on man Almost all substantial UNIX and Unix-like operating systems have extensive documentation known as man pages (short for manual pages). The Unix command used to display them is man. ...
A backronym (or bacronym) is a phrase that is constructed after the fact from a previously existing abbreviation, the abbreviation being an initialism or an acronym. ...
This article or section does not cite any references or sources. ...
The camel symbol Programming Perl, published by O'Reilly Media, features a picture of a camel on the cover, and is commonly referred to as The Camel Book.[3] This image of a camel has become a general symbol of Perl. Programming Perl book cover Programming Perl, best known as the camel book among hackers, is a book about writing programs or scripts using the Perl programming language. ...
Programming Perl is a classic OReilly book. ...
For other uses, see Camel (disambiguation). ...
O'Reilly owns the image as a trademark, but claims to use their legal rights only to protect the "integrity and impact of that symbol".[11] O'Reilly allows non-commercial use of the symbol, and provides Programming Republic of Perl logos and Powered by Perl buttons.[12]
Overview Perl is a general-purpose programming language originally developed for text manipulation and now used for a wide range of tasks including system administration, web development, network programming, GUI development, and more. A system administrator is a person responsible for running, or running some aspect of, a computer system. ...
Web development is a broad term for any activities related to developing a web site for the World Wide Web or an intranet. ...
Network programming may refer to one of several things: Network programming, (computer) Network programming, (television) This is a disambiguation page — a navigational aid which lists other pages that might otherwise share the same title. ...
GUI can refer to the following: GUI is short for graphical user interface, a term used to describe a type of interface in computing. ...
The language is intended to be practical (easy to use, efficient, complete) rather than beautiful (tiny, elegant, minimal).[13] Its major features include support for multiple programming paradigms (procedural, object-oriented, and functional styles), reference counting memory management (without a cycle detecting garbage collector), built-in support for text processing, and a large collection of third-party modules. ...
Object-oriented programming (OOP) is a programming paradigm that uses objects and their interactions to design applications and computer programs. ...
Functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. ...
In computer science, reference counting is a technique of storing the number of references, pointers, or handles to a resource such as an object or block of memory. ...
Memory management is the act of managing computer memory. ...
It has been suggested that this article or section be merged into Modularity (programming). ...
Features The overall structure of Perl derives broadly from C. Perl is procedural in nature, with variables, expressions, assignment statements, brace-delimited code blocks, control structures, and subroutines. In computer science and mathematics, a variable (pronounced ) (sometimes called an object or identifier in computer science) is a symbolic representation used to denote a quantity or expression. ...
An expression in a programming language is a combination of values and functions or procedures, interpreted according to the particular rules of precedence and of association for a particular programming language, which computes and then returns another value. ...
Assignment statement is a statement where a destination is assigned a specific value , mostly copied from a source , where the source can be either a variable , a constant or any other . ...
For technical reasons, :) and some similar combinations starting with : redirect here. ...
In computer programming, a statement block (or code block) is a section of code which is grouped together, much like a paragraph; such blocks consist of one, or more, statements. ...
In computer science and in computer programming, statements in pseudocode or in a program are normally obeyed one after the other in the order in which they are written (sequential flow of control). ...
In computer science, a subroutine (function, method, procedure, or subprogram) is a portion of code within a larger program, which performs a specific task and can be relatively independent of the remaining code. ...
Perl also takes features from shell programming. All variables are marked with leading sigils, which unambiguously identify the data type (scalar, array, hash, etc.) of the variable in context. Importantly, sigils allow variables to be interpolated directly into strings. Perl has many built-in functions which provide tools often used in shell programming (though many of these tools are implemented by programs external to the shell) like sorting, and calling on system facilities. In computer programming, a sigil is a symbol attached to a variable name, showing the variables datatype. ...
Perl takes lists from Lisp, associative arrays (hashes) from AWK, and regular expressions from sed. These simplify and facilitate many parsing, text handling, and data management tasks. Look up list in Wiktionary, the free dictionary. ...
An associative array (also map, hash, dictionary, finite map, lookup table, and in query-processing an index or index file) is an abstract data type composed of a collection of keys and a collection of values, where each key is associated with one value. ...
In computing, a regular expression is a string that is used to describe or match a set of strings, according to certain syntax rules. ...
In Perl 5, features were added that support complex data structures, first-class functions (i.e., closures as values), and an object-oriented programming model. These include references, packages, class-based method dispatch, and lexically scoped variables, along with compiler directives (for example, the strict pragma). A major additional feature introduced with Perl 5 was the ability to package code as reusable modules. Larry 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."[14] A binary tree, a simple type of branching linked data structure. ...
In computer science, a programming language is said to support first-class functions if it treats functions as first-class objects. ...
In computer science, a closure is a function that is evaluated in an environment containing one or more bound variables. ...
This article is about a general notion of reference in computing. ...
In computer programming, scope is an enclosing context where values and expressions are associated. ...
In computer science, a compiler directive is data embedded in source code by programmers to tell compilers some intention about compilation. ...
All versions of Perl do automatic data typing and memory management. The interpreter knows the type and storage requirements of every data object in the program; it allocates and frees storage for them as necessary using reference counting (so it cannot deallocate circular data structures without manual intervention). Legal type conversions—for example, conversions from number to string—are done automatically at run time; illegal type conversions are fatal errors. In computer science, reference counting is a technique of storing the number of references, pointers, or handles to a resource such as an object or block of memory. ...
Design 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 compiler technology. Many earlier computer languages, such as Fortran and C, were designed to make efficient use of expensive computer hardware. In contrast, Perl is designed to make efficient use of expensive computer programmers. Fortran (previously FORTRAN[1]) is a general-purpose[2], procedural,[3] imperative programming language that is especially suited to numeric computation and scientific computing. ...
Perl has many features that ease the programmer's task at the expense of greater CPU and memory requirements. These include automatic memory management; dynamic typing; strings, lists, and hashes; regular expressions; introspection and an eval() function. In computer science, a type system defines how a programming language classifies values and expressions into types, how it can manipulate those types and how they interact. ...
Wall was trained as a linguist, and the design of Perl is very much informed by linguistic principles. Examples include Huffman coding (common constructions should be short), good end-weighting (the important information should come first), and a large collection of language primitives. Perl favors language constructs that are concise and natural for humans to read and write, even where they complicate the Perl interpreter. In computer science and information theory, Huffman coding is an entropy encoding algorithm used for lossless data compression. ...
Perl syntax reflects the idea that "things that are different should look different". For example, scalars, arrays, and hashes have different leading sigils. Array indices and hash keys use different kinds of braces. Strings and regular expressions have different standard delimiters. This approach can be contrasted with languages like Lisp, where the same S-expression construct and basic syntax is used for many different purposes. In computer programming, a sigil is a symbol attached to a variable name, showing the variables datatype. ...
Lisp is a family of computer programming languages with a long history and a distinctive fully-parenthesized syntax. ...
An S-expression (S stands for symbolic) is a convention for representing data or an expression in a computer program in a text form. ...
Perl does not enforce any particular programming paradigm (procedural, object-oriented, functional, etc.) or even require the programmer to choose among them. There is a broad practical bent to both the Perl language and the community and culture that surround it. The preface to Programming Perl begins, "Perl is a language for getting your job done." One consequence of this is that Perl is not a tidy language. It includes many features, tolerates exceptions to its rules, and employs heuristics to resolve syntactical ambiguities. Because of the forgiving nature of the compiler, bugs can sometimes be hard to find. Discussing the variant behaviour of built-in functions in list and scalar contexts, the perlfunc(1) manual page says "In general, they do what you want, unless you want consistency." Perl has several mottos that convey aspects of its design and use. One is "There's more than one way to do it." (TIMTOWTDI, usually pronounced 'Tim Toady'). Others are "Perl: the Swiss Army Chainsaw of Programming Languages" and "No unnecessary limits". A stated design goal of Perl is to make easy tasks easy and difficult tasks possible. Perl has also been called "The Duct Tape of the Internet".[15] There is more than one way to do it (TIMTOWTDI, usually pronounced Tim Toady) is a Perl motto. ...
There is no written specification or standard for the Perl language, and no plans to create one for the current version of Perl. There has only been one implementation of the interpreter. That interpreter, together with its functional tests, stands as a de facto specification of the language.
Applications Perl has many and varied applications, compounded by the availability of many standard and third-party modules. Perl has been used since the early days of the Web to write CGI scripts. It is known as one of "the three Ps" (along with Python and PHP), the most popular dynamic languages for writing Web applications. It is also an integral component of the popular LAMP solution stack for web development. Large projects written in Perl include Slash, Bugzilla, TWiki and Movable Type. Many high-traffic websites, such as bbc.co.uk, Amazon.com, LiveJournal.com, Ticketmaster.com and IMDb.com[16] use Perl extensively. The Common Gateway Interface (CGI) is a standard protocol for interfacing external application software with an information server, commonly a web server. ...
Python is a general-purpose, high-level programming language. ...
For other uses, see PHP (disambiguation). ...
The acronym LAMP refers to a solution stack of software, usually free software / open-source software, used to run dynamic Web sites or servers. ...
In computing, a solution stack is a set of software subsystems or components needed to deliver a fully functional application environment. ...
Slash (a backronym for Slashdot-Like Automated Storytelling Homepage) is the open source collection of Perl modules and stand-alone programs which runs Slashdot, one of the oldest and most popular collaborative weblogs in existence. ...
Bugzilla is a general-purpose bug-tracking tool originally developed and used by the Mozilla Foundation. ...
For the robot character, see Twiki. ...
For the weblog software, see Movable Type. ...
The domain name bbc. ...
Amazon. ...
LiveJournal (often abbreviated LJ) is a virtual community where Internet users can keep a blog, journal, or diary. ...
Ticketmaster is based in West Hollywood, California, USA, but has operations in many countries around the world. ...
For the in-memory database management system, see In-memory database. ...
Perl is often used as a glue language, tying together systems and interfaces that were not specifically designed to interoperate, and for "data munging", i.e., converting or processing large amounts of data for tasks like creating reports. In fact, these strengths are intimately linked. The combination makes perl a popular all-purpose tool for system administrators, particularly as short programs can be entered and run on a single command line. A glue language is a programming language used for connecting software components together. ...
A system administrator, or sysadmin, is a person employed to maintain, and operate a computer system or network. ...
With a degree of care, Perl code can be made portable across Windows and Unix. Portable Perl code is often used by suppliers of software (both COTS and bespoke) to simplify packaging and maintenance of software build and deployment scripts. Graphical user interfaces (GUI's) may be developed using Perl. In particular, Perl/Tk is commonly used to enable user interaction with Perl scripts. Such interaction may be synchronous or asynchronous using callbacks to update the GUI. For more information about the technologies involved see Tk,Tcl and WxPerl. In computing, Tk is an open source, cross-platform widget toolkit, that is, a library of basic elements for building a graphical user interface (GUI). ...
Tcl (originally from Tool Command Language, but nonetheless conventionally rendered as Tcl rather than TCL; and pronounced tickle) is a scripting language created by John Ousterhout. ...
wxPerl is a perl module allowing the creation of graphical user interface (GUI) from Perl programming language; it is built as a wrapper for the WxWidgets (C++ GUI widget toolkit). ...
Perl is also widely used in finance and bioinformatics, where it is valued for rapid application development and deployment, and the ability to handle large data sets. Map of the human X chromosome (from the NCBI website). ...
Implementation Perl is implemented as a core interpreter, written in C, together with a large collection of modules, written in Perl and C. The source distribution is, as of 2005, 12 MB when packaged in a tar file and compressed. 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 character encoding tables.) 2005 is a common year starting on Saturday of the Gregorian calendar. ...
This article is about a unit of data. ...
In computing, tar (derived from tape archive) is both file format (in the form of a type of archive bitstream) and the name of the program used to handle such files. ...
Source coding redirects here. ...
The interpreter has an object-oriented architecture. All of the elements of the Perl language—scalars, arrays, hashes, coderefs, file handles—are represented in the interpreter by C structs. Operations on these structs are defined by a large collection of macros, typedefs and functions; these constitute the Perl C API. The Perl API can be bewildering to the uninitiated, but its entry points follow a consistent naming scheme, which provides guidance to those who use it. The execution of a Perl program divides broadly into two phases: compile-time and run-time.[17] At compile time, the interpreter parses the program text into a syntax tree. At run time, it executes the program by walking the tree. The text is parsed only once, and the syntax tree is subject to optimization before it is executed, so the execution phase is relatively efficient. Compile-time optimizations on the syntax tree include constant folding and context propagation, but peephole optimization is also performed. However, compile-time and run-time phases may nest: BEGIN code blocks execute at compile-time, while the eval function initiates compilation during runtime. Both operations are an implicit part of a number of others—most notably, the use clause that loads libraries, known in Perl as modules, implies a BEGIN block. In compiler theory, constant folding and constant propagation are related optimization techniques used by many modern compilers. ...
In compiler theory, peephole optimization is a kind of optimization performed over a very small set of instructions in a segment of generated code. ...
In some programming languages, eval is a function which evaluates a string as though it were an expression and returns a result; in others, it executes multiple lines of code as though they had been included instead of the line including the eval. ...
Perl has a context-sensitive grammar which can be affected by code executed during an intermittent run-time phase.[18] Therefore Perl cannot be parsed by a straight Lex/Yacc lexer/parser combination. Instead, the interpreter implements its own lexer, which coordinates with a modified GNU bison parser to resolve ambiguities in the language. It is said that "only perl can parse Perl", meaning that only the Perl interpreter (perl) can parse the Perl language (Perl). The truth of this is attested to by the persistent imperfections of other programs that undertake to parse Perl, such as source code analyzers and auto-indenters, which have to contend not only with the many ways to express unambiguous syntactic constructs, but also the fact that Perl cannot be parsed in the general case without executing it. Though successful in creating a Perl parser for document-related purposes, the PPI project determined that parsing Perl code as a document (retaining its integrity) and as executable code simultaneously was, in fact, not possible. Specifically the author claimed that, "parsing Perl suffers from the 'Halting Problem.'"[19] For the rules of the English language, see English grammar. ...
lex is a program that generates lexical analyzers (scanners or lexers). Lex is commonly used with the yacc parser generator. ...
yacc is a computer program that serves as the standard parser generator on Unix systems. ...
GNU bison is a free parser generator computer program written for the GNU project, and available for virtually all common operating systems. ...
Perl interpreter, or perl is a open-source software running on multiple platforms, that parses and executes the scripts written in the Perl script-language. ...
In computability theory the halting problem is a decision problem which can be stated as follows: Given a description of a program and a finite input, decide whether the program finishes running or will run forever, given that input. ...
Perl is distributed with some 120,000 functional tests. 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 bugs; conversely, Perl users who see the interpreter pass its functional tests on their system can have a high degree of confidence that it is working properly. Maintenance of the Perl interpreter has become increasingly difficult over the years. The code base has been in continuous development since 1994. The code has been optimized for performance at the expense of simplicity, clarity, and strong internal interfaces. New features have been added, yet virtually complete backward compatibility with earlier versions is maintained. The size and complexity of the interpreter is a barrier to developers who wish to work on it.
Availability Perl is free software, and is licensed under both the Artistic License and the GNU General Public License. Distributions are available for most operating systems. It is particularly prevalent on Unix and Unix-like systems, but it has been ported to most modern (and many obsolete) platforms. With only six reported exceptions, Perl can be compiled from source code on all Unix-like, POSIX-compliant or otherwise Unix-compatible platforms.[20] However, this is rarely necessary, as Perl is included in the default installation of many popular operating systems. Free software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things. ...
The Artistic License is a software license used for certain free software packages, most notably the standard Perl implementation, most of CPAN modules and Parrot, which are dual-licensed under the Artistic License and the GNU General Public License (GPL). ...
GPL redirects here. ...
For other uses, see Perl (disambiguation). ...
An operating system (OS) is a software that manages computer resources and provides programmers with an interface used to access those resources. ...
Filiation of Unix and Unix-like systems Unix (officially trademarked as UNIX®, sometimes also written as or ® with small caps) is a computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs including Ken Thompson, Dennis Ritchie and Douglas McIlroy. ...
Diagram of the relationships between several Unix-like systems A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification. ...
Source code (commonly just source or code) is any series of statements written in some human-readable computer programming language. ...
POSIX or Portable Operating System Interface[1] is the collective name of a family of related standards specified by the IEEE to define the application programming interface (API) for software compatible with variants of the Unix operating system. ...
Because of unusual changes required for the Mac OS Classic environment, a special port called MacPerl was shipped independently.[21] Apple marketed its operating system software as Mac OS, beginning in 1997. ...
The CPAN carries a complete list of supported platforms with links to the distributions available on each.[22]
Windows Users of Microsoft Windows typically install one of the native binary distributions of Perl for Win32[23], most commonly ActivePerl. Compiling Perl from source code under Windows is possible, but most installations lack the requisite C compiler and build tools. This also makes it hard to install modules from the CPAN, particularly those that are partially written in C. Windows redirects here. ...
ActiveState is a Canadian software company headquartered in Vancouver, British Columbia that develops, sells, and supports cross-platform development tools for dynamic languages such as Perl, PHP, Python, Ruby, and Tcl, as well as language distributions and enterprise services. ...
Source code (commonly just source or code) is any series of statements written in some human-readable computer programming language. ...
Users of the ActivePerl binary distribution are therefore dependent on the repackaged modules provided in ActiveState’s module repository, which are precompiled and can be installed with PPM. Limited resources to maintain this repository have been cause for various long-standing problems[24][25]. ActiveState is a Canadian software company headquartered in Vancouver, British Columbia that develops, sells, and supports cross-platform development tools for dynamic languages such as Perl, PHP, Python, Ruby, and Tcl, as well as language distributions and enterprise services. ...
Perl Package Manager (PPM) is a Perl utility intended to simplify the tasks of locating, installing, upgrading and removing software packages. ...
To address this and other problems of Perl on the Windows platform, win32.perl.org was launched by Adam Kennedy on behalf of The Perl Foundation in June 2006. This is a community website for "all things Windows and Perl." A major aim of this project is to provide production-quality alternative Perl distributions that include an embedded C compiler and build tools, so as to enable Windows users to install modules directly from the CPAN. The production distribution in the family is known as Strawberry Perl, with research and experimental work done in a related Vanilla Perl distribution. The Perl Foundation (TPF) is dedicated to the advancement of the Perl programming language through open discussion, collaboration, design, and code. ...
Another popular way of running Perl under Windows is provided by the Cygwin emulation layer. Cygwin provides a Unix-like environment on Windows and both perl and cpan are conveniently available as standard pre-compiled packages in the Cygwin setup program. Since Cygwin also includes the gcc, compiling Perl from source is also possible. Cygwin (pronounced ) is a collection of free software tools originally developed by Cygnus Solutions to allow various versions of Microsoft Windows to act similar to a Unix system. ...
The GNU Compiler Collection (usually shortened to GCC) is a set of programming language compilers produced by the GNU Project. ...
Language structure In Perl, the minimal Hello world program may be written as follows: A hello world program is a computer program that prints out Hello, world! on a display device. ...
This prints the string Hello, world! and a newline, symbolically expressed by an n character whose interpretation is altered by the preceding escape character (a backslash). Energy Input: The energy placed into a reaction. ...
In computer programming and formal language theory, (and other branches of mathematics), a string is an ordered sequence of symbols. ...
In computing, a newline is a special character or sequence of characters signifying the end of a line of text. ...
In computing and telecommunication, an escape character is one which has a special meaning in a sequence of characters. ...
The canonical form of the program is slightly more verbose: #!/usr/bin/perl print "Hello, world!n"; The hash mark character introduces a comment in Perl, which runs up to the end of the line of code and is ignored by the compiler. The comment used here is of a special kind: it’s called the shebang line. This tells Unix-like operating systems where to find the Perl interpreter, making it possible to invoke the program without explicitly mentioning perl. (Note that on Microsoft Windows systems, Perl programs are typically invoked by associating the .pl extension with the Perl interpreter. In order to deal with such circumstances, perl detects the shebang line and parses it for switches,[20] so it is not strictly true that the shebang line is ignored by the compiler.) An illustration of Java source code with prologue comments indicated in red and inline comments in green. ...
For other uses, see Shebang. ...
Windows redirects here. ...
A filename extension is a suffix to the name of a computer file applied to indicate its type. ...
The second line in the canonical form includes a semicolon, which is used to separate statements in Perl. With only a single statement in a block or file, a separator is unnecessary, so it can be omitted from the minimal form of the program—or more generally from the final statement in any block or file. The canonical form includes it because it is common to terminate every statement even when it is unnecessary to do so, as this makes editing easier: code can be added to or moved away from the end of a block or file without having to adjust semicolons. Version 5.10 of Perl introduces a say function that implicitly appends a newline character to its output, making the minimal "Hello world" program even shorter: Data types Perl has a number of fundamental data types, the most commonly used and discussed being: scalars, arrays, hashes, filehandles and subroutines: In programming languages a data type defines a set of values and the allowable operations on those values[1]. For example, in the Java programming language, the int type represents the set of 32-bit integers ranging in value from -2,147,483,648 to 2,147,483,647, and...
In computing, a scalar is a variable or field that can hold only one value at a time; as opposed to composite variables like array, list, record, etc. ...
For the microarray in genetics, see SNP array. ...
In computer science, a hash table is a data structure that speeds up searching for information by a particular aspect of that information, called a key. ...
In computing, a file descriptor is an identifier maintained by the operating system. ...
In computer science, a subroutine (function, procedure, or subprogram) is a sequence of code which performs a specific task, as part of a larger program, and is grouped as one, or more, statement blocks; such code is sometimes collected into software libraries. ...
- A scalar is a single value; it may be a number, a string or a reference
- An array is an ordered collection of scalars
- A hash, or associative array, is a map from strings to scalars; the strings are called keys and the scalars are called values.
- A file handle is a map to a file, device, or pipe which is open for reading, writing, or both.
- A subroutine is a piece of code that may be passed arguments, be executed, and return data
Most variables are marked by a leading sigil, which identifies the data type being accessed (not the type of the variable itself), except filehandles, which don't have a sigil. The same name may be used for variables of different data types, without conflict. In computing, a scalar is a variable or field that can hold only one value at a time; as opposed to composite variables like array, list, record, etc. ...
In computer programming and formal language theory, (and other branches of mathematics), a string is an ordered sequence of symbols. ...
This article is about a general notion of reference in computing. ...
For the microarray in genetics, see SNP array. ...
An associative array (also map, hash, dictionary, finite map, lookup table, and in query-processing an index or index file) is an abstract data type composed of a collection of keys and a collection of values, where each key is associated with one value. ...
This article discusses a general notion of reference in computing. ...
In computer programming, a sigil is a symbol attached to a variable name, showing the variables datatype. ...
$foo # a scalar @foo # an array %foo # a hash FOO # a file handle or constant &foo # a subroutine. (The & is optional) File handles and constants need not be uppercase, but it is a common convention owing to the fact that there is no sigil to denote them. Both are global in scope, but file handles are interchangeable with references to file handles, which can be stored in scalars, which in turn permit lexical scoping. Doing so is encouraged in Damian Conway's Perl Best Practices. As a convenience, the open function in Perl 5.6 and newer will autovivify undefined scalars to file handle references. This article discusses a general notion of reference in computing. ...
Damian Conway at the 2005 European Open Source Convention. ...
Numbers are written in the bare form; strings are enclosed by quotes of various kinds. $name = "joe"; $color = 'red'; $number1 = 42; $number2 = '42'; # This evaluates to true if ($number1 == $number2) { print "Numbers and strings of numbers are the same!"; } $answer = "The answer is $number1"; # Variable interpolation: The answer is 42 $price = 'This device costs $42'; # No interpolation in single quotes $album = "It's David Bowie's "Heroes""; # literal quotes inside a string; $album = 'It's David Bowie's "Heroes"'; # same as above with single quotes; $album = q(It's David Bowie's "Heroes"); # the quote-like operators q() and qq() allow # almost any delimiter instead of quotes, to # avoid excessive backslashing $multilined_string =<<EOF; This is my multilined string note that I am terminating it with the "EOF" word. EOF Perl will convert strings into numbers and vice versa depending on the context in which they are used. In the following example the strings $n and $m are treated as numbers when they are the arguments to the addition operator. This code prints the number '5', discarding non numeric information for the operation, although the variable values remain the same. (The string concatenation operator is the period, not the + symbol.) $n = '3 apples'; $m = '2 oranges'; print $n + $m; Perl also has a boolean context that it uses in evaluating conditional statements. The following values all evaluate as false in Perl: $false = 0; # the number zero $false = 0.0; # the number zero as a float $false = 0b0; # the number zero in binary $false = 0x0; # the number zero in hexadecimal $false = '0'; # the string zero $false = ""; # the empty string $false = undef; # the return value from undef All other values are evaluated to true. This includes the odd self-describing literal string of "0 but true", which in fact is 0 as a number, but true when used as a boolean. (Any non-numeric string would also have this property, but this particular string is ignored by Perl with respect to numeric warnings.) A less explicit but more conceptually portable version of this string is '0E0' or '0e0', which does not rely on characters being evaluated as 0, as '0E0' is literally "zero times ten to the zeroth power." Evaluated boolean expressions also return scalar values. Although the documentation does not promise which particular true or false is returned (and thus cannot be relied on), many boolean operators return 1 for true and the empty-string for false (which evaluates to zero in a numeric context). The defined() function tells if the variable has any value set. In the above examples defined($false) is true for every value except undef. If a specifically 1 or 0 result (as in C) is needed, an explicit conversion is thought by some authors to be required: my $real_result = $boolean_result ? 1 : 0; However, if it's known that the value is either 1 or undef, an implicit conversion can be used instead: my $real_result = $boolean_result + 0; A list is written by listing its elements, separated by commas, and enclosed by parentheses where required by operator precedence. @scores = (32, 45, 16, 5); It can be written many other ways as well, some straightforward and some less so: # An explicit and straightforward way @scores = ('32', '45', '16', '5'); # Equivalent to the above, but the qw() quote-like operator saves typing of # quotes and commas and reduces visual clutter; almost any delimiter can be # used instead of parentheses @scores = qw(32 45 16 5); # The split function returns a list of strings, which are extracted # from the expression using a regex template. # This may be useful for reading from a file of comma-separated values (CSV) @scores = split /,/, '32,45,16,5'; # It's also possible to use a postfix for operator and aliasing of # the $_ magic variable to the next value of the list during each # iteration; this is pointless here, but similar idioms are widely used # in some circumstances. push @scores, $_ foreach 32, 45, 16, 5; A hash may be initialized from a list of key/value pairs: %favorite = ( joe => 'red', sam => 'blue' ); The => operator is equivalent to a comma, except that it assumes quotes around the preceding token if it is a bare identifier: (joe => 'red') is the same as ('joe' => 'red'). It can therefore be used to elide quote marks, improving readability. Individual elements of a list are accessed by providing a numerical index, in square brackets. Individual values in a hash are accessed by providing the corresponding key, in curly braces. The $ sigil identifies the accessed element as a scalar. $scores[2] # an element of @scores $favorite{joe} # a value in %favorite Thus, a hash can also be specified by setting its keys individually: $favorite{joe} = 'red'; $favorite{sam} = 'blue'; Multiple elements may be accessed by using the @ sigil instead (identifying the result as a list). @scores[2, 3, 1] # three elements of @scores @favorite{'joe', 'sam'} # two values in %favorite @favorite{qw(joe sam)} # same as above The number of elements in an array can be obtained by evaluating the array in scalar context or with the help of the $# sigil. The latter gives the index of the last element in the array, not the number of elements. $count = @friends; # Assigning to a scalar forces scalar context # This notation is sometimes discouraged, because it tends # to be confused with comments. $#friends; # The index of the last element in @friends $#friends+1; # Usually the number of elements in @friends is one more # than $#friends because the first element is at index 0, # not 1, unless the programmer reset this to a different # value, which most Perl manuals discourage. There are a few functions that operate on entire hashes. @names = keys %addressbook; @addresses = values %addressbook; # Every call to each returns the next key/value pair. # All values will be eventually returned, but their order # cannot be predicted. while (($name, $address) = each %addressbook) { print "$name lives at $addressn"; } # Similar to the above, but sorted alphabetically foreach my $next_name (sort keys %addressbook) { print "$next_name lives at $addressbook{$next_name}n"; } Control structures -
Perl has several kinds of control structures. The basic control structures in Perl are similar to those used in the C or Java programming languages, but they have been extended in several ways. ...
It has block-oriented control structures, similar to those in the C, Javascript, and Java programming languages. Conditions are surrounded by parentheses, and controlled blocks are surrounded by braces: JavaScript is a scripting language most often used for client-side web development. ...
Java language redirects here. ...
label while ( cond ) { ... } label while ( cond ) { ... } continue { ... } label for ( init-expr ; cond-expr ; incr-expr ) { ... } label foreach var ( list ) { ... } label foreach var ( list ) { ... } continue { ... } if ( cond ) { ... } if ( cond ) { ... } else { ... } if ( cond ) { ... } elsif ( cond ) { ... } else { ... } Where only a single statement is being controlled, statement modifiers provide a more concise syntax: statement if cond ; statement unless cond ; statement while cond ; statement until cond ; statement foreach list ; Short-circuit logical operators are commonly used to affect control flow at the expression level: Short-circuit evaluation or minimal evaluation denotes the semantics of some boolean operators in some programming languages in which the second argument is only executed or evaluated if the first argument does not suffice to determine the value of the expression: when the first argument of and evaluates to false...
expr and expr expr && expr expr or expr expr || expr (The "and" and "or" operators are similar to && and || but have lower precedence, which makes it easier to use them to control entire statements.) Precedence is a simple ordering, based on either importance or sequence. ...
The flow control keywords next (corresponding to C's continue), last (corresponding to C's break), return, and redo are expressions, so they can be used with short-circuit operators. Perl also has two implicit looping constructs, each of which has two forms: results = grep { ... } list results = grep expr, list results = map { ... } list results = map expr, list grep returns all elements of list for which the controlled block or expression evaluates to true. map evaluates the controlled block or expression for each element of list and returns a list of the resulting values. These constructs enable a simple functional programming style. Functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. ...
Up until the 5.10.0 release, there was no switch statement in Perl 5. From 5.10.0 onwards, a multi-way branch statement called given/when is available, which takes the following form: In computer programming, a switch statement is a type of control statement that exists in most modern imperative programming languages (e. ...
given ( expr ) { when ( cond ) { ... } default { ... } } Syntactically, this structure behaves similarly to switch statement's found in other languages, but with a few important differences. The largest is that unlike switch/case structures, given/when statements break execution after the first successful branch, rather than waiting for explicitly defined break commands. Conversely, explicit continues are instead necessary to emulate switch behavior. In computer programming, a switch statement is a type of control statement that exists in most modern imperative programming languages (e. ...
For those not using the 5.10.0 release, the Perl documentation describes a half-dozen ways to achieve the same effect by using other control structures. There is also a Switch module, which provides functionality modeled on the forthcoming Perl 6 re-design. It is implemented using a
|