Languages and formats
Perl
Summary
Perl is a free, general-purpose programming language that Larry Wall first released on December 18, 1987, as a tool for scanning text and printing reports. Perl 5, released on October 17, 1994, added modules, and the CPAN archive of shared code followed in October 1995. Perl was used for many CGI scripts, the programs behind early web forms, and shipped with the CGI.pm module from 1997 until 2015. Perl 6 became a separate language, Raku, in 2019, and Perl 5.44.0, released on July 15, 2026, is the current stable version.
What Perl is
Perl is a general-purpose programming language created by Larry Wall, who released version 1.000 on December 18, 1987.1 The 1987 manual page described an interpreted language built for scanning text files, pulling information out of them and printing reports based on it, and added that it was also good for many system management tasks.2 An interpreted language is one whose programs are run directly by another program, the interpreter, instead of being turned into machine code first.
The current documentation says Perl grew from that text-processing start, through system administration, into a general-purpose language. It describes the goal as being practical (easy to use, efficient and complete) rather than beautiful.3 Wall himself wrote that Perl has no agenda “other than to be maximally useful to the maximal number of people.”4
The name is written two ways. Perl, with only the P capitalized, is the language, and perl, all lowercase, is the interpreter program that runs it.5 Sources disagree on what the letters stand for. The 1987 manual page gave the name as Practical Extraction and Report Language,2 and today’s manual page says Perl officially stands for that phrase, then jokes that it really stands for Pathologically Eclectic Rubbish Lister.3 The official FAQ takes the other side: perl is not an acronym, so it should never be written PERL.5
Perl is free software. Anyone may copy and change it under either the GNU General Public License, version 1 or any later version, or the Artistic License, which ships with it. The copyright notice credits Larry Wall and others from 1993 to 2026.6 The FAQ says Perl is supported by its users and written by volunteers and developed by a core team known as the Perl Porters, and is not produced by the Free Software Foundation.5
The language in use today is Perl 5, whose releases are numbered 5.42, 5.44 and so on. Raku, which began life as Perl 6, is a separate language in the same family and is not meant to replace Perl.57
Larry Wall and Perl 1 to 4 (1987 to 1993)
The README of the first release, copyright 1987 by Larry Wall, said Perl combined some of the features of C, sed, awk and shell, the standard text tools of Unix systems. It also shipped translators that turned awk and sed programs into Perl. Copying was allowed as long as nobody tried to make money from the kit or claimed to have written it.8
Wall’s own short history, kept in the Perl documentation, sums up each early version in a line.1
- Perl 0 introduced Perl to his officemates. Its release date is listed as “Classified. Don’t ask.”
- Perl 1 (December 18, 1987) introduced Perl to the world.
- Perl 2 (June 5, 1988) added Henry Spencer’s regular expression package.
- Perl 3 (October 18, 1989) could handle binary data, not just text.
- Perl 4 (March 21, 1991) arrived with the first Camel book. Wall wrote that the version number was changed mainly so the book could refer to 4.000.
A regular expression is a short pattern that describes text, such as “any run of digits followed by a dash,” which a program can use to find, check or replace matching text. Later versions of Perl added more pattern features, and other software copied them, as described below.
The Camel book is Programming Perl, published by O’Reilly. Its publisher says it was adopted as the standard Perl reference soon after the first edition appeared in 1991. The fourth edition, by Tom Christiansen, brian d foy, Larry Wall and Jon Orwant, came out in February 2012.9
The last Perl 4 release, 4.036, came out on February 5, 1993. The history file describes it as very stable.1
Perl 5, modules and CPAN
Larry Wall released Perl 5.000 on October 17, 1994, as holder of the “pumpkin,” the project’s name for the job of release manager.1 His summary of Perl 5 is that it introduced everything else, including the ability to introduce everything else.1
The 5.000 change log lists what that meant in practice:10
- References and objects, so programs could build nested data structures and object-oriented code.
- Lexical variables declared with my, which exist only inside the block where they are declared.
- Modules loaded with use, and the :: separator in package names, as in File::Copy.
- Dynamic loading of external modules, often written in C, at run time.
- Embedding, with support for several Perl interpreters inside one process.
- New regular expression features, including non-greedy matching and lookahead assertions.
Modules made it practical for programmers to share code, and in October 1995 the Comprehensive Perl Archive Network, or CPAN, went online to collect it. As of October 2026, CPAN’s home page counts 47,918 distributions (packages of modules) written by 14,753 authors.11
Among CPAN’s modules is DBI, which describes itself as a database access module for Perl. DBI gives a script one interface for many database systems, with a separate driver module for each.12 Through it, Perl programs send SQL queries to databases such as MySQL. DBI version 1.656 was released on October 18, 2026.12
Wall also released 5.001 in March 1995 and 5.002 in February 1996, and the pumpkin then passed among other volunteers. Chip Salzenberg, who coined the pumpkin name, released 5.004 on May 15, 1997, and 5.005 followed on July 22, 1998. Version numbering then changed to the three-part style: 5.6.0 on March 22, 2000, 5.8.0 on July 18, 2002 and 5.10.0 on December 18, 2007.1
Perl and the early web
A web server can send stored files just as they are. To build a page on request, such as the answer to a search or a form, a web server needs to run a program. The Common Gateway Interface, or CGI, is a simple way to do this. The server passes details of the HTTP request to an outside program in environment variables, sends any form data on its standard input, and returns whatever the program prints as the response.13 CGI was not written up as an RFC until October 2004, as RFC 3875, and that document is informational rather than an Internet standard.13
A typical CGI script reads form fields and prints HTML, which is text work of the kind Perl was built for. Three examples from the early World Wide Web show Perl at work behind web pages.
- CGI.pm. This module parses form data and helps build HTTP responses. Its earliest listed version, 2.10, is dated November 25, 1995, and it was shipped inside Perl itself from 5.004 to 5.20.14 Perl 5.22.0 removed it from the core distribution in June 2015,15 and its documentation now says it is no longer considered good practice for building web applications, even small ones.14
- Matt’s Script Archive. Matt Wright’s site has offered free Perl CGI scripts since 1995, including FormMail, which emails the contents of HTML forms, a guestbook and the WWWBoard forum. The site says FormMail was downloaded over 2 million times since 1997. Its latest version, 1.93, is dated July 14, 2009.16
- Bugzilla. The bug tracker Terry Weissman wrote for mozilla.org was first deployed there on April 6, 1998. Weissman originally wrote it in the Tcl language, and its port to Perl was completed in September 1998.17
Not all of this code was safe. In 2001 the London Perl Mongers, a Perl user group, began writing drop-in replacements for Matt’s scripts, which they said were known in the Perl community to be buggy and insecure. Their project, nms, required its scripts to run cleanly under strict mode and taint checks. In May 2002 Wright added a page recommending the nms versions to anyone learning CGI programming.18
Taint mode, switched on with the -T flag, is Perl’s own guard for this kind of program. It marks all command line arguments, environment variables and file input as tainted, and stops tainted data from being used in a shell command or a command that changes files, unless the program has checked it first. The documentation strongly suggests it for server programs and anything run on behalf of someone else, such as CGI scripts.19
CGI also had a cost in speed: the server started a new Perl interpreter for every request. The Apache project’s mod_perl removes that cost by keeping a persistent Perl interpreter inside the Apache HTTP Server, and the project calls itself more than CGI scripting on steroids.20
Perl also influenced other web languages. PHP‘s official history says the PHP/FI release of Rasmus Lerdorf‘s tools had Perl-like variables, and that its syntax was similar to Perl’s, though more limited and somewhat inconsistent.21 Perl’s regular expressions spread even further. PCRE, the Perl Compatible Regular Expressions library that Philip Hazel first released in 1997, copies the syntax and meaning of Perl 5 patterns, and its site lists Apache and PHP among the software that uses it.22
Perl 6, Raku and the Perl 7 plan
In July 2000, at the O’Reilly Open Source Convention and Perl Conference 4.0, Wall announced Perl 6. O’Reilly’s press release, dated July 21, 2000, described it as “a complete rewrite of Perl that will be released in 18 to 24 months.”23
The rewrite took far longer. The first official version of the language, called 6.c, came out on December 25, 2015, together with the Rakudo 2015.12 compiler that implemented it.7 Perl 5 development continued alongside it the whole time, with stable releases such as 5.12.0 in April 2010 and 5.22.0 in June 2015.1
In 2019 a proposal on GitHub asked to rename Perl 6 to Raku. Wall approved it, writing that he was in favor because the change reflected an ancient wisdom, a reference to a biblical parable.24 The pull request that carried out the rename was merged in mid-October 2019.25 The Raku FAQ now calls Perl and Raku sister languages that can work with each other.7
Perl 5 then attempted a version jump of its own. On June 24, 2020, at The Perl Conference in the Cloud, Sawyer X announced Perl 7.26 The plan was a release that would be essentially Perl 5.32 with more modern settings switched on by default, with Perl 7.0 expected within about a year.27
Perl 7 has not been released. In May 2022 the Perl Steering Council said it had decided against using a new major version to break old code, and would save the number 7 for a set of features that, taken together, justify a new baseline. Code would then opt in with use v7.28 In the meantime, the same idea arrives through version bundles. A line such as use v5.36 states which Perl a program needs and turns on that release’s stable features, including warnings.2829
Perl today: releases, support and web frameworks
Perl now ships a new stable series about once a year, numbered with an even middle digit (5.40, 5.42, 5.44), and development releases with an odd digit roughly every month.30 Perl.org recommends always running the latest stable version, 5.44.0 as of October 2026.31 It was released on July 15, 2026.1
The 5.44.0 release notes count about 270,000 lines of changes across 1,300 files from 71 authors over roughly 12 months. They list experimental named parameters in subroutine signatures, support for Unicode 17.0, and fixes for three security flaws in the interpreter itself, including CVE-2026-8376, a buffer overflow in an internal function, Perl_study_chunk, that can write out of bounds on 32-bit builds.32 Recent releases have also modernized the language: 5.36 made subroutine signatures a stable feature in 2022,29 and 5.38 added an experimental class syntax for object-oriented code in 2023.33
The project tries to fix critical issues in the two most recent stable series, and provides critical security patches for any series whose first release came out within the past three years.30 As of the 5.44 release, its policy table lists 5.44 and 5.42 as fully supported and 5.40 as receiving security fixes only.30 CPAN’s source page lists the latest releases as 5.45.4 (development, October 22, 2026), 5.44.0, 5.42.3 and 5.40.5 (both August 2, 2026), but labels the 5.40 branch end of life, so the two pages differ on 5.40.34
Perl development is governed by a three-person Steering Council elected by the core team, with a new council chosen after each stable release or every two years, whichever comes first.35 The Perl and Raku Foundation, which also still uses the name The Perl Foundation, describes itself as dedicated to advancing both languages.36
Modern Perl web applications rarely use raw CGI. PSGI is an interface between Perl web applications and web servers, and Plack is a toolkit of middleware, helpers and server adapters for it. Tatsuhiko Miyagawa wrote both, with many contributors, and they were inspired by Python‘s WSGI and Ruby‘s Rack. Frameworks such as Catalyst, Dancer and Mojolicious support PSGI.37 Mojolicious, credited to Sebastian Riedel and its contributors, describes itself as a real-time web framework for applications that use WebSockets, with no requirements besides Perl 5.26.0.38
Perl’s share of public websites is now small. As of October 22, 2026, W3Techs finds Perl on 0.1% of websites whose server-side language it can identify, against 69.3% for PHP, 8.1% for JavaScript, 7.1% for Ruby, 5.4% for Java and 1.1% for Python.39 Perl remains part of web hosting itself, though. The cPanel hosting control panel can use its own embedded Perl 5.36.0 to handle CGI scripts and to run its maintenance scripts, separate from the operating system’s Perl.40
Timeline
- Perl 5.45.4, a development release, comes out34
- Perl 5.44.0 is released1
- Perl 5.36.0 makes subroutine signatures a stable feature29
- The Perl Steering Council explains why Perl 7 is on hold28
- Sawyer X announces the Perl 7 plan26
- Perl 6 is renamed Raku25
- Perl 6 version 6.c and Rakudo 2015.12 are released7
- Perl 5.22.0 removes CGI.pm from the core distribution15
- The London Perl Mongers start nms, replacements for Matt's Script Archive18
- Larry Wall announces Perl 623
- Perl 5.004, the first release to include CGI.pm, comes out1
- CPAN goes online11
- Perl 5.000 adds modules, references and objects10
- Perl 4.000 is released alongside the first Camel book1
- Larry Wall releases Perl 1.0001
What it means for your website
Most small business sites never run a line of Perl. Hosted builders run their own code, and WordPress is written in PHP. Perl matters if your site is old enough to have a cgi-bin folder, if a developer built you a custom Perl application, or if your host’s control panel depends on it.
- Look for old CGI scripts. Sites built in the late 1990s and 2000s may still carry Perl form handlers such as FormMail. Matt’s Script Archive has not released a new FormMail since version 1.93 in 2009,16 and the nms replacements were started in 2001 to fix the security problems of the originals.18 If a contact form still posts to a .pl or .cgi file, have it replaced with a form from your platform or a maintained plugin.
- Do not build new pages on CGI.pm. Its own documentation says it is no longer good practice for web applications, even small scripts.14
- Check the Perl version. Running perl -v shows it. As of October 2026, the Perl project’s policy fully supports 5.44 and 5.42, with security fixes only for 5.40, though CPAN already labels 5.40 end of life.3034 An operating system may ship an older Perl, such as 5.32.1 on AlmaLinux 9 in cPanel’s table, so ask your host how it keeps that copy patched.40
- Keep taint mode on in scripts that read forms. If you or a developer keeps a Perl script that handles visitor input, the -T flag makes Perl refuse to pass unchecked input to shell commands.19
- Plan the move before you change hosts. A Perl application needs a server that runs Perl, through CGI, mod_perl or a PSGI server.2037 List every script before a website migration, because a new host may not run them.
If an old Perl site is due for replacement, our redesign hub helps you choose between updating, migrating and rebuilding, and our guide to how a website works explains where server-side code fits.
See also
References
- perlhist: the Perl history records. Perl 5 Porters, perldoc.perl.org. accessed October 22, 2026.
- perl.man.1: the Perl 1.0 manual page. Larry Wall, Perl 1.0 source, Perl/perl5 repository on GitHub. 1987-12-18. accessed October 22, 2026.
- perl: The Perl 5 language interpreter. Perl 5 Porters, perldoc.perl.org. accessed October 22, 2026.
- Perl, the first postmodern computer language. Larry Wall, wall.org. accessed October 22, 2026.
- perlfaq1: General Questions About Perl. Perl 5 Porters, perldoc.perl.org. accessed October 22, 2026.
- README. Perl/perl5 repository on GitHub. accessed October 22, 2026.
- FAQ. Raku documentation, docs.raku.org. accessed October 22, 2026.
- README: Perl Kit, Version 1.0. Larry Wall, Perl 1.0 source, Perl/perl5 repository on GitHub. 1987-12-18. accessed October 22, 2026.
- Programming Perl, 4th Edition. Tom Christiansen, brian d foy, Larry Wall and Jon Orwant, O'Reilly Media. 2012-02. accessed October 22, 2026.
- Changes (Perl 5.000). Larry Wall, Perl 5.000 source, Perl/perl5 repository on GitHub. 1994-10-17. accessed October 22, 2026.
- The Comprehensive Perl Archive Network. CPAN, cpan.org. accessed October 22, 2026.
- DBI: Database independent interface for Perl. MetaCPAN. 2026-10-18. accessed October 22, 2026.
- RFC 3875: The Common Gateway Interface (CGI) Version 1.1. David Robinson and Ken A. L. Coar, RFC Editor. 2004-10. accessed October 22, 2026.
- CGI: Handle Common Gateway Interface requests and responses. MetaCPAN. 2026-05-05. accessed October 22, 2026.
- perl5220delta: what is new for perl v5.22.0. Perl 5 Porters, perldoc.perl.org. 2015-06-01. accessed October 22, 2026.
- Matt's Script Archive: Free Perl CGI Scripts. Matt Wright, scriptarchive.com. accessed October 22, 2026.
- About Bugzilla. Bugzilla project, bugzilla.org. accessed October 22, 2026.
- About nms. nms project, SourceForge. 2004-12-28. accessed October 22, 2026.
- perlsec: Perl security. Perl 5 Porters, perldoc.perl.org. accessed October 22, 2026.
- mod_perl: Welcome to the mod_perl world. The Apache Software Foundation, perl.apache.org. accessed October 22, 2026.
- History of PHP. The PHP Group, php.net. accessed October 22, 2026.
- PCRE: Perl Compatible Regular Expressions. pcre.org. accessed October 22, 2026.
- O'Reilly Convention Surmounts Expectations (press release). O'Reilly and Associates, via LWN.net. 2000-07-21. accessed October 22, 2026.
- We, Wall, we, Wall, Raku: Perl creator blesses new name for version 6 of text-wrangling lingo. Thomas Claburn, The Register. 2019-10-11. accessed October 22, 2026.
- Perl 6 renamed to Raku. LWN.net. 2019-10-15. accessed October 22, 2026.
- Perl 7 announced at Perl Conference in the Cloud. Stuart J Mackintosh, The Perl Foundation News. 2020-06-24. accessed October 22, 2026.
- Announcing Perl 7. Perl.com. accessed October 22, 2026.
- What happened to Perl 7?. Perl Steering Council, blogs.perl.org. 2022-05-25. accessed October 22, 2026.
- perl5360delta: what is new for perl v5.36.0. Perl 5 Porters, perldoc.perl.org. 2022-05-27. accessed October 22, 2026.
- perlpolicy: Various and sundry policies and commitments related to the Perl core. Perl 5 Porters, perldoc.perl.org. accessed October 22, 2026.
- Download Perl distributions. Perl.org. accessed October 22, 2026.
- perl5440delta: what is new for perl v5.44.0. Perl 5 Porters, perldoc.perl.org. 2026-07-15. accessed October 22, 2026.
- perl5380delta: what is new for perl v5.38.0. Perl 5 Porters, perldoc.perl.org. 2023-07-02. accessed October 22, 2026.
- Perl Source. CPAN, cpan.org. 2026-10-22. accessed October 22, 2026.
- perlgov: Perl Rules of Governance. Perl 5 Porters, perldoc.perl.org. accessed October 22, 2026.
- The Perl and Raku Foundation. The Perl and Raku Foundation, perlfoundation.org. accessed October 22, 2026.
- PSGI/Plack: Perl Superglue for Web frameworks and Web Servers. plackperl.org. accessed October 22, 2026.
- Mojolicious: Perl real-time web framework. Mojolicious, mojolicious.org. accessed October 22, 2026.
- Usage statistics of server-side programming languages for websites. W3Techs. 2026-10-22. accessed October 22, 2026.
- Guide to Perl in cPanel: Perl Environments. cPanel Developer Documentation, cPanel, L.L.C.. accessed October 22, 2026.
Web Building Encyclopedia. First published October 22, 2026. Last reviewed October 22, 2026. Every fact on this page is linked to a source we opened. Spotted an error? Write to [email protected].