Misplaced Pages

Perl

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

Binary data is data whose unit can take on only two possible states. These are often labelled as 0 and 1 in accordance with the binary numeral system and Boolean algebra .

#78921

69-429: Perl is a high-level , general-purpose , interpreted , dynamic programming language . Though Perl is not officially an acronym, there are various backronyms in use, including "Practical Extraction and Reporting Language". Perl was developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions. Perl originally

138-560: A multinomial regression . Counts of non-i.i.d. binary data can be modeled by more complicated distributions, such as the beta-binomial distribution (a compound distribution ). Alternatively, the relationship can be modeled without needing to explicitly model the distribution of the output variable using techniques from generalized linear models , such as quasi-likelihood and a quasibinomial model; see Overdispersion § Binomial . In modern computers , binary data refers to any data represented in binary form rather than interpreted on

207-471: A switch statement (called "given"/"when"), regular expressions updates, and the smart match operator (~~). Around this same time, development began in earnest on another implementation of Perl 6 known as Rakudo Perl, developed in tandem with the Parrot virtual machine . As of November 2009, Rakudo Perl has had regular monthly releases and now is the most complete implementation of Perl 6. A major change in

276-479: A base object from which all classes were automatically derived and the ability to require versions of modules. Another significant development was the inclusion of the CGI.pm module, which contributed to Perl's popularity as a CGI scripting language . Perl 5.004 added support for Microsoft Windows , Plan 9 , QNX , and AmigaOS . Perl 5.005 was released on July 22, 1998. This release included several enhancements to

345-506: A case for a major new language initiative. This led to a decision to begin work on a redesign of the language, to be called Perl 6. Proposals for new language features were solicited from the Perl community at large, which submitted more than 300 RFCs . Wall spent the next few years digesting the RFCs and synthesizing them into a coherent framework for Perl 6. He presented his design for Perl 6 in

414-428: A focus on usability over optimal program efficiency. Unlike low-level assembly languages , high-level languages have few, if any, language elements that translate directly into a machine's native opcodes . Other features, such as string handling routines, object-oriented language features, and file input/output, may also be present. One thing to note about high-level programming languages is that these languages allow

483-459: A form of categorical data, binary data is nominal data , meaning the values are qualitatively different and cannot be compared numerically. However, the values are frequently represented as 1 or 0, which corresponds to counting the number of successes in a single trial: 1 (success…) or 0 (failure); see § Counting . Often, binary data is used to represent one of two conceptually opposed values, e.g.: However, it can also be used for data that

552-453: A fully general lambda abstraction in a programming language for the first time. "High-level language" refers to the higher level of abstraction from machine language . Rather than dealing with registers, memory addresses, and call stacks, high-level languages deal with variables, arrays, objects , complex arithmetic or Boolean expressions , subroutines and functions, loops, threads , locks, and other abstract computer science concepts, with

621-491: A higher level or converted into some other form. At the lowest level, bits are stored in a bistable device such as a flip-flop . While most binary data has symbolic meaning (except for don't cares ) not all binary data is numeric. Some binary data corresponds to computer instructions , such as the data within processor registers decoded by the control unit along the fetch-decode-execute cycle . Computers rarely modify individual bits for performance reasons. Instead, data

690-592: A large collection of language primitives . Perl favors language constructs that are concise and natural for humans to write, even where they complicate the Perl interpreter. High-level programming language In computer science , a high-level programming language is a programming language with strong abstraction from the details of the computer . In contrast to low-level programming languages , it may use natural language elements , be easier to use, or may automate (or even hide entirely) significant areas of computing systems (e.g. memory management ), making

759-417: A magnetic tape that has a coating of ferromagnetic material, this is a type of paramagnetic material that has domains aligned in a particular direction to give a remnant magnetic field even after removal of currents through materials or magnetic field. During loading of data in the magnetic tape, the magnetic field is passed in one direction to call the saved orientation of the domain 1 and for the magnetic field

SECTION 10

#1732765699079

828-474: A new I/O implementation, added a new thread implementation, improved numeric accuracy, and added several new modules. As of 2013, this version was still the most popular Perl version and was used by Red Hat Linux 5, SUSE Linux 10, Solaris 10, HP-UX 11.31, and AIX 5. In 2004, work began on the "Synopses" – documents that originally summarized the Apocalypses, but which became the specification for

897-570: A rand() function using a consistent random number generator. Some observers credit the release of Perl 5.10 with the start of the Modern Perl movement. 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. While the book Modern Perl may be the most visible standard-bearer of this idea, other groups such as

966-577: A series of documents called "apocalypses" – numbered to correspond to chapters in Programming Perl . As of January 2011, the developing specification of Perl 6 was encapsulated in design documents called Synopses – numbered to correspond to Apocalypses. Thesis work by Bradley M. Kuhn , overseen by Wall, considered the possible use of the Java virtual machine as a runtime for Perl. Kuhn's thesis showed this approach to be problematic. In 2001, it

1035-623: A specific system architecture . Abstraction penalty is the cost that high-level programming techniques pay for being unable to optimize performance or use certain hardware because they don't take advantage of certain low-level architectural resources. High-level programming exhibits features like more generic data structures and operations, run-time interpretation, and intermediate code files; which often result in execution of far more operations than necessary, higher memory consumption, and larger binary program size. For this reason, code which needs to run particularly quickly and efficiently may require

1104-546: Is aligned in groups of a fixed number of bits, usually 1 byte (8 bits). Hence, "binary data" in computers are actually sequences of bytes. On a higher level, data is accessed in groups of 1 word (4 bytes) for 32-bit systems and 2 words for 64-bit systems. In applied computer science and in the information technology field, the term binary data is often specifically opposed to text-based data , referring to any sort of data that cannot be interpreted as text . The "text" vs. "binary" distinction can sometimes refer to

1173-514: Is "Easy things should be easy and hard things should be possible". 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, 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. Perl has many features that ease

1242-419: Is a random variable of binary type, meaning with two possible values. Independent and identically distributed (i.i.d.) binary variables follow a Bernoulli distribution , but in general binary data need not come from i.i.d. variables. Total counts of i.i.d. binary variables (equivalently, sums of i.i.d. binary variables coded as 1 or 0) follow a binomial distribution , but when binary variables are not i.i.d.,

1311-528: Is a visual pun on pearl onion . Larry Wall began work on Perl in 1987, while employed as a programmer at Unisys ; he released version 1.0 on December 18, 1987. Wall based early Perl on some methods existing languages used for text manipulation. Perl 2, released in June 1988, featured a better regular expression engine. Perl 3, released in October 1989, added support for binary data streams. Originally,

1380-487: Is assumed to have only two possible values, even if they are not conceptually opposed or conceptually represent all possible values in the space. For example, binary data is often used to represent the party choices of voters in elections in the United States, i.e. Republican or Democratic . In this case, there is no inherent reason why only two political parties should exist, and indeed, other parties do exist in

1449-498: Is inherently at a slightly higher level than the microcode or micro-operations used internally in many processors. There are three general modes of execution for modern high-level languages: Note that languages are not strictly interpreted languages or compiled languages. Rather, implementations of language behavior use interpreting or compiling. For example, ALGOL 60 and Fortran have both been interpreted (even though they were more typically compiled). Similarly, Java shows

SECTION 20

#1732765699079

1518-428: Is known as binary regression ; when binary data is converted to count data and modeled as i.i.d. variables (so they have a binomial distribution), binomial regression can be used. The most common regression methods for binary data are logistic regression , probit regression , or related types of binary choice models. Similarly, counts of i.i.d. categorical variables with more than two categories can be modeled with

1587-491: Is not yet implemented), implicit strictures, full Y2038 compliance, regex conversion overloading, DTrace support, and Unicode 5.2. On May 14, 2011, Perl 5.14 was released with JSON support built-in. On May 20, 2012, Perl 5.16 was released. Notable new features include the ability to specify a given version of Perl that one wishes to emulate, allowing users to upgrade their version of Perl, but still run old scripts that would normally be incompatible. Perl 5.16 also updates

1656-800: Is possible for a high-level language to be directly implemented by a computer – the computer directly executes the HLL code. This is known as a high-level language computer architecture – the computer architecture itself is designed to be targeted by a specific high-level language. The Burroughs large systems were target machines for ALGOL 60 , for example. Binary data Binary data occurs in many different technical and scientific fields, where it can be called by different names including bit (binary digit) in computer science , truth value in mathematical logic and related domains and binary variable in statistics. A discrete variable that can take only one state contains zero information , and 2

1725-776: Is the next natural number after 1. That is why the bit , a variable with only two possible values, is a standard primary unit of information . A collection of n bits may have 2 states: see binary number for details. Number of states of a collection of discrete variables depends exponentially on the number of variables, and only as a power law on number of states of each variable. Ten bits have more ( 1024 ) states than three decimal digits ( 1000 ). 10 k bits are more than sufficient to represent an information (a number or anything else) that requires 3 k decimal digits, so information contained in discrete variables with 3 , 4, 5, 6, 7, 8, 9, 10 ... states can be ever superseded by allocating two, three, or four times more bits. So,

1794-520: The C language , and similar languages, were most often considered "high-level", as it supported concepts such as expression evaluation, parameterised recursive functions, and data types and structures, while assembly language was considered "low-level". Today, many programmers might refer to C as low-level, as it lacks a large runtime-system (no garbage collection, etc.), basically supports only scalar operations, and provides direct memory addressing; it therefore, readily blends with assembly language and

1863-551: The Comprehensive Perl Archive Network (CPAN) was established as a repository for the Perl language and Perl modules ; as of December 2022, it carries over 211,850 modules in 43,865 distributions, written by more than 14,324 authors, and is mirrored worldwide at more than 245 locations. Perl 5.004 was released on May 15, 1997, and included, among other things, the UNIVERSAL package, giving Perl

1932-599: The Libera Chat #raku IRC channel. Many functional programming influences were absorbed by the Perl 6 design team. In 2012, Perl 6 development was centered primarily on two compilers: In 2013, MoarVM ("Metamodel On A Runtime"), a C language-based virtual machine designed primarily for Rakudo was announced. In October 2019, Perl 6 was renamed to Raku. As of 2017 only the Rakudo implementation and MoarVM are under active development, and other virtual machines, such as

2001-422: The doc format used by Microsoft Word ); contrarily, image data is sometimes represented in textual format (e.g. the X PixMap image format used in the X Window System ). 1 and 0 are nothing but just two different voltage levels. You can make the computer understand 1 for higher voltage and 0 for lower voltage. There are many different ways to store two voltage levels. If you have seen floppy, then you will find

2070-468: The regex engine, new hooks into the backend through the B::* modules, the qr// regex quote operator, a large selection of other new core modules, and added support for several more operating systems, including BeOS . Perl 5.6 was released on March 22, 2000. Major changes included 64-bit support, Unicode string representation, support for files over 2 GiB, and the "our" keyword. When developing Perl 5.6,

2139-420: The system architecture which they were written for without major revision. This is the engineering 'trade-off' for the 'Abstraction Penalty'. Examples of high-level programming languages in active use today include Python , JavaScript , Visual Basic , Delphi , Perl , PHP , ECMAScript , Ruby , C# , Java and many others. The terms high-level and low-level are inherently relative. Some decades ago,

Perl - Misplaced Pages Continue

2208-453: The "Apocalypses" for Perl 6, a series of documents meant to summarize the change requests and present the design of the next generation of Perl. They were presented as a digest of the RFCs, rather than a formal document. At this time, Perl 6 existed only as a description of a language. Perl 5.8 was first released on July 18, 2002, and further 5.X versions have been released approximately yearly since then. Perl 5.8 improved Unicode support, added

2277-431: The "a" from the name. The name is occasionally expanded as a backronym : Practical Extraction and Report Language and Wall's own Pathologically Eclectic Rubbish Lister , which is in the manual page for perl. Programming Perl , published by O'Reilly Media , features a picture of a dromedary camel on the cover and is commonly called the "Camel Book". This image has become an unofficial symbol of Perl. O'Reilly owns

2346-684: The Enlightened Perl Organization have taken up the cause. In late 2012 and 2013, several projects for alternative implementations for Perl 5 started: Perl5 in Perl6 by the Rakudo Perl team, moe by Stevan Little and friends, p2 by the Perl11 team under Reini Urban, gperl by goccy, and rperl, a Kickstarter project led by Will Braswell and affiliated with the Perl11 project. At the 2000 Perl Conference , Jon Orwant made

2415-669: The Java Virtual Machine and JavaScript , are supported. In June 2020, Perl 7 was announced as the successor to Perl 5. Perl 7 was to initially be based on Perl 5.32 with a release expected in first half of 2021, and release candidates sooner. This plan was revised in May 2021, without any release timeframe or version of Perl 5 for use as a baseline specified. When Perl 7 would be released, Perl 5 would have gone into long term maintenance. Supported Perl 5 versions however would continue to get important security and bug fixes. Perl 7

2484-496: The Perl 6 language. In February 2005, Audrey Tang began work on Pugs , a Perl 6 interpreter written in Haskell . This was the first concerted effort toward making Perl 6 a reality. This effort stalled in 2006. The Perl On New Internal Engine (PONIE) project existed from 2003 until 2006. It was to be a bridge between Perl 5 and 6, and an effort to rewrite the Perl 5 interpreter to run on the Perl 6 Parrot virtual machine . The goal

2553-625: The Perl Steering Committee canceled it to avoid issues with backward compatibility for scripts that were not written to the pragmas and modules that would become the default in Perl 7. Perl 7 will only come out when the developers add enough features to warrant a major release upgrade. According to Wall, Perl has two slogans. The first is "There's more than one way to do it," commonly known as TMTOWTDI, (pronounced Tim Toady ). As proponents of this motto argue, this philosophy makes it easy to write concise statements. The second slogan

2622-510: The U.S., but they are so minor that they are generally simply ignored. Modeling continuous data (or categorical data of more than 2 categories) as a binary variable for analysis purposes is called dichotomization (creating a dichotomy ). Like all discretization, it involves discretization error , but the goal is to learn something valuable despite the error: treating it as negligible for the purpose at hand, but remembering that it cannot be assumed to be negligible in general. A binary variable

2691-737: The arbitrary data-length limits of many contemporary Unix command line tools . Perl is a highly expressive programming language: source code for a given algorithm can be short and highly compressible. Perl gained widespread popularity in the mid-1990s as a CGI scripting language, in part due to its powerful regular expression and string parsing abilities. In addition to CGI, Perl 5 is used for system administration , network programming , finance, bioinformatics , and other applications, such as for graphical user interfaces (GUIs). It has been nicknamed "the Swiss Army chainsaw of scripting languages" because of its flexibility and power. In 1998, it

2760-433: The coordinate for the "failure" value). For example, if the value A is considered "success" (and thus B is considered "failure"), the data set A, A, B would be represented as 1, 1, 0. When this is grouped, the values are added, while the number of trial is generally tracked implicitly. For example, A, A, B would be grouped as 1 + 1 + 0 = 2 successes (out of n = 3 {\displaystyle n=3} trials). Going

2829-408: The core to support Unicode 6.1. On May 18, 2013, Perl 5.18 was released. Notable new features include the new dtrace hooks, lexical subs, more CORE:: subs, overhaul of the hash for security reasons, support for Unicode 6.2. On May 27, 2014, Perl 5.20 was released. Notable new features include subroutine signatures, hash slices/new slice syntax, postfix dereferencing (experimental), Unicode 6.3, and

Perl - Misplaced Pages Continue

2898-407: The counts added. For instance, if the set A, A, B is grouped, the total counts are (2, 1): 2 A's and 1 B (out of 3 trials). Since there are only two possible values, this can be simplified to a single count (a scalar value) by considering one value as "success" and the other as "failure", coding a value of the success as 1 and of the failure as 0 (using only the coordinate for the "success" value, not

2967-493: The decision was made to switch the versioning scheme to one more similar to other open source projects; after 5.005_63, the next version became 5.5.640, with plans for development versions to have odd numbers and stable versions to have even numbers. In 2000, Wall put forth a call for suggestions for a new version of Perl from the community. The process resulted in 361 RFC ( Request for Comments ) documents that were to be used in guiding development of Perl 6. In 2001, work began on

3036-463: The development process of Perl 5 occurred with Perl 5.11; the development community has switched to a monthly release cycle of development releases, with a yearly schedule of stable releases. By that plan, bugfix point releases will follow the stable releases every three months. On April 12, 2010, Perl 5.12.0 was released. Notable core enhancements include new package NAME VERSION syntax, the yada yada operator (intended to mark placeholder code that

3105-473: The difficulty of trying to apply these labels to languages, rather than to implementations; Java is compiled to bytecode which is then executed by either interpreting (in a Java virtual machine (JVM)) or compiling (typically with a just-in-time compiler such as HotSpot , again in a JVM). Moreover, compiling, transcompiling, and interpreting is not strictly limited to only a description of the compiler artifact (binary executable or IL assembly). Alternatively, it

3174-438: The distribution need not be binomial. Like categorical data, binary data can be converted to a vector of count data by writing one coordinate for each possible value, and counting 1 for the value that occurs, and 0 for the value that does not occur. For example, if the values are A and B, then the data set A, A, B can be represented in counts as (1, 0), (1, 0), (0, 1). Once converted to counts, binary data can be grouped and

3243-482: The goal of aggregating the most popular constructs with new or improved features. An example of this is Scala which maintains backward compatibility with Java , meaning that programs and libraries written in Java will continue to be usable even if a programming shop switches to Scala; this makes the transition easier and the lifespan of such high-level coding indefinite. In contrast, low-level programs rarely survive beyond

3312-611: The higher abstraction may allow for more powerful techniques providing better overall results than their low-level counterparts in particular settings. High-level languages are designed independent of a specific computing system architecture . This facilitates executing a program written in such a language on any computing system with compatible support for the Interpreted or JIT program. High-level languages can be improved as their designers develop improvements. In other cases, new high-level languages evolve from one or more others with

3381-502: The image as a trademark but licenses it for non-commercial use, requiring only an acknowledgement and a link to www.perl.com. Licensing for commercial use is decided on a case-by-case basis. O'Reilly also provides "Programming Republic of Perl" logos for non-commercial sites and "Powered by Perl" buttons for any site that uses Perl. The Perl Foundation owns an alternative symbol, an onion, which it licenses to its subsidiaries, Perl Mongers , PerlMonks , Perl.org, and others. The symbol

3450-534: The machine level of CPUs and microcontrollers . Also, in the introduction chapter of The C Programming Language (second edition) by Brian Kernighan and Dennis Ritchie , C is described as "not a very high level" language. Assembly language may itself be regarded as a higher level (but often still one-to-one if used without macros ) representation of machine code , as it supports concepts such as constants and (limited) expressions, sometimes even variables, procedures, and data structures . Machine code , in turn,

3519-409: The only documentation for Perl was a single lengthy man page . In 1991, Programming Perl , known to many Perl programmers as the "Camel Book" because of its cover, 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 well documented by the book. Perl 4

SECTION 50

#1732765699079

3588-423: The other way, count data with n = 1 {\displaystyle n=1} is binary data, with the two classes being 0 (failure) or 1 (success). Counts of i.i.d. binary variables follow a binomial distribution, with ⁠ n {\displaystyle n} ⁠ the total number of trials (points in the grouped data). Regression analysis on predicted outcomes that are binary variables

3657-419: The process of developing a program simpler and more understandable than when using a lower-level language. The amount of abstraction provided defines how "high-level" a programming language is. In the 1960s, a high-level programming language using a compiler was commonly called an autocode . Examples of autocodes are COBOL and Fortran . The first high-level programming language designed for computers

3726-620: The programmer to be detached and separated from the machine. That is, unlike low-level languages like assembly or machine language, high-level programming can amplify the programmer's instructions and trigger a lot of data movements in the background without their knowledge. The responsibility and power of executing instructions have been handed over to the machine from the programmer. High-level languages intend to provide features that standardize common tasks, permit rich debugging, and maintain architectural agnosticism; while low-level languages often produce more efficient code through optimization for

3795-523: The semantic content of a file (e.g. a written document vs. a digital image ). However, it often refers specifically to whether the individual bytes of a file are interpretable as text (see character encoding ) or cannot so be interpreted. When this last meaning is intended, the more specific terms binary format and text(ual) format are sometimes used. Semantically textual data can be represented in binary format (e.g. when compressed or in certain formats that intermix various sorts of formatting codes, as in

3864-654: The task of the programmer 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. Perl follows the theory of "no built-in limits", an idea similar to the Zero One Infinity rule. 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

3933-549: The use of a lower-level language, even if a higher-level language would make the coding easier. In many cases, critical portions of a program mostly in a high-level language can be hand-coded in assembly language , leading to a much faster, more efficient, or simply reliably functioning optimised program . However, with the growing complexity of modern microprocessor architectures, well-designed compilers for high-level languages frequently produce code comparable in efficiency to what most low-level programmers can produce by hand, and

4002-503: The use of any other small number than 2 does not provide an advantage. Moreover, Boolean algebra provides a convenient mathematical structure for collection of bits, with a semantic of a collection of propositional variables . Boolean algebra operations are known as " bitwise operations " in computer science. Boolean functions are also well-studied theoretically and easily implementable, either with computer programs or by so-named logic gates in digital electronics . This contributes to

4071-418: The use of bits to represent different data, even those originally not binary. In statistics , binary data is a statistical data type consisting of categorical data that can take exactly two possible values, such as "A" and "B", or "heads" and "tails". It is also called dichotomous data , and an older term is quantal data . The two values are often referred to generically as "success" and "failure". As

4140-678: Was Plankalkül , created by Konrad Zuse . However, it was not implemented in his time, and his original contributions were largely isolated from other developments due to World War II , aside from the language's influence on the "Superplan" language by Heinz Rutishauser and also to some degree ALGOL . The first significantly widespread high-level language was Fortran , a machine-independent development of IBM's earlier Autocode systems. The ALGOL family, with ALGOL 58 defined in 1958 and ALGOL 60 defined in 1960 by committees of European and American computer scientists, introduced recursion as well as nested functions under lexical scope . ALGOL 60

4209-682: Was also referred to as the " duct tape that holds the Internet together", in reference to both its ubiquitous use as a glue language and its perceived inelegance. Perl was originally named "Pearl". Wall wanted to give the language a short name with positive connotations. It is also a Christian reference to the Parable of the Pearl from the Gospel of Matthew. However, Wall discovered the existing PEARL language before Perl's official release and dropped

SECTION 60

#1732765699079

4278-451: Was also the first language with a clear distinction between value and name-parameters and their corresponding semantics . ALGOL also introduced several structured programming concepts, such as the while-do and if-then-else constructs and its syntax was the first to be described in formal notation – Backus–Naur form (BNF). During roughly the same period, COBOL introduced records (also called structs) and Lisp introduced

4347-464: Was announced on 24 June 2020 at "The Perl Conference in the Cloud" as the successor to Perl 5. Based on Perl 5.32, Perl 7 was planned to be backward compatible with modern Perl 5 code; Perl 5 code, without boilerplate (pragma) header needs adding use compat::perl5; to stay compatible, but modern code can drop some of the boilerplate. The plan to go to Perl 7 brought up more discussion, however, and

4416-508: Was decided that Perl 6 would run on a cross-language virtual machine called Parrot . In 2005, Audrey Tang created the Pugs project, an implementation of Perl 6 in Haskell . This acted as, and continues to act as, a test platform for the Perl 6 language (separate from the development of the actual implementation), allowing the language designers to explore. The Pugs project spawned an active Perl/Haskell cross-language community centered around

4485-544: Was not capitalized and the name was changed to being capitalized by the time Perl 4 was released. The latest release is Perl 5, first released in 1994. From 2000 to October 2019 a sixth version of Perl was in development; the sixth version's name was changed to Raku . Both languages continue to be developed independently by different development teams which liberally borrow ideas from each other. Perl borrows features from other programming languages including C , sh , AWK , and sed . It provides text processing facilities without

4554-494: Was released in March 1991. Perl 4 went through a series of maintenance releases , culminating in Perl 4.036 in 1993, whereupon 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. Perl 5.000

4623-417: Was released on March 13, 1995. Perl 5.002 was released on February 29, 1996 with the new prototypes feature. This allowed module authors to make subroutines that behaved like Perl builtins . Perl 5.003 was released June 25, 1996, as a security release. 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,

4692-502: Was released on October 17, 1994. It was a nearly complete rewrite of the interpreter , and it 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. Perl 5 has been in active development since then. Perl 5.001

4761-464: Was to ensure the future of the millions of lines of Perl 5 code at thousands of companies around the world. The PONIE project ended in 2006 and is no longer being actively developed. Some of the improvements made to the Perl 5 interpreter as part of PONIE were folded into that project. On December 18, 2007, the 20th anniversary of Perl 1.0, Perl 5.10.0 was released. Perl 5.10.0 included notable new features, which brought it closer to Perl 6. These included

#78921