What's Perl All About, Anyway?

Previous Table of Contents Next

What's Perl All About, Anyway?

To get a sense of the culture of Perl, how it works, and what resources are available to you, it's necessary to learn what makes Perl tick.

A Brief History of Perl

In 1988, the Internet was a different place. First, it was a lot smaller and looked much different than it does today. The Internet, at the time, had roughly 60,000 machines on it. Today there are hundreds of millions.

At the time, the World Wide Web didn't exist. It wouldn't be conceived until 1991 at CERN in Europe, and the first graphical browser, Mosaic, wouldn't be invented until 1993.

Most of the traffic on the Internet was textual. Usenet news provided a messaging system so that interest groups could keep in touch. Email strongly resembled what it is todaythat is, mostly textual. File transfers and remote logins rounded out the traffic on the Internet.

In January 1988, Larry Wall announced that he had just written a replacement for the awk and sed tools under Unix; he called it "Perl." The original manual for Perl described it as follows:

Perl is a interpreted language optimized for scanning arbitrary text files, extracting information from those text files, and printing reports based on that information. It's also a good language for many system management tasks. The language is intended to be practical (easy to use, efficient, complete) rather than beautiful (tiny, elegant, minimal). It combines (in the author's opinion, anyway) some of the best features of C, sed, awk, and sh, so people familiar with those languages should have little difficulty with it. (Language historians will also note some vestiges of csh, Pascal, and even BASIC-PLUS.) Expression syntax corresponds quite closely to C expression syntax. If you have a problem that would ordinarily use sed or awk or sh, but it exceeds their capabilities or must run a little faster, and you don't want to write the silly thing in C, then perl may be for you. There are also translators to turn your sed and awk scripts into perl scripts.

Perl version 2 was released in June 1988, and it looked very much like modern-day Perl: You would recognize and be able to use most of the features of Perl 2. It was, and is, a rich, fully functional programming language. As the description said, Perl's features at the time were geared toward text processing and system programming tasks.

For Perl, 1991 was a banner year. In January, the first edition of Programming Perl by Larry Wall and Randal Schwartz was published. This book was (and remains, in its later editions) the definitive reference book for the Perl language. On the pink cover was featured a camel, the official mascot of the Perl language. (It's not a handsome animal, but it's reliable, trustworthy, and very utilitarian.)

The first edition of Programming Perl coincided with the release of Perl version 4. This version of Perl was the first widely distributed version of Perl, and remnants of it may still be found today in far-flung corners of the Net, despite the fact that it was last patched in 1992. You probably shouldn't use it if you run across it.

In October 1994, Perl version 5 was released. Features such as private variables, references, modules, and objectswhich you haven't seen yetwere introduced. In October 1996, the second edition of Programming Perl ("The Blue Camel") was released, documenting these new features.

Open Source

One of the reasons for Perl's success has to do with how the Perl language is developed and distributed. The Perl interpreter is a piece of Open Source software. Open Source is the new term given to an old concept among software programmers: freely redistributable software. This software can be given away for free, and the source code for the software can be viewed, fixed, and adapted by anyone who wishes to change it. Other software packages that follow this model are the Linux and FreeBSD operating systems, the Apache Web server, and the Firefox Open Source browser.

Using the Open Source model is a very effective way to develop software. Because the code is written by volunteers, unnecessary code tends not to be included in the package. Features that are deemed necessary are proposed and included. The software's quality is very good because everyone with an interest in the software has the right, and duty, to watch the development carefully to look for bugs. The more people who look at the code, the fewer bugs tend to survive.

By the Way

Eric S. Raymond has written an excellent series of essays on the Open Source model of development that discuss why it works so well, why it's economically beneficial, and how it developed. The first essay, "The Cathedral and the Bazaar," is a good introduction to how the Open Source development model works. The URL for these essays is listed in the "Other Resources" section of this hour.

The Perl interpreter is copyrighted by Larry Wall; he owns it, and it's his to do with as he pleases. However, like most software, Perl can be licensed for use. A software license describes how the software can be used and distributed; it's the fine print you find when opening store-bought software. Larry Wall offers two different licenses for you to choose from: the GNU General Public License and the Perl Artistic License. After reading both, you can choose to follow the terms of either agreement when redistributing Perl.

The text of both licenses is quite lengthy, but let me summarize briefly:

  • You may redistribute the source code for the Perl interpreter, but you must duplicate the copyright notices.

  • You may modify the original source code if your changes are clearly marked as your own and you either give away the changes or clearly indicate that it is not the standard version of Perl. You must provide the standard version as well.

  • You can charge a reasonable fee for distributing Perl. You can charge a fee for support, but you cannot sell Perl itself. You can include Perl in other products you do sell.

  • Programs that are written using Perl are not subject to this license.

  • No warranties are made about Perl.

You shouldn't rely on a brief summary like this for legal purposes; I provided it only to give you a feel for the licenses themselves.

Watch Out!

Before you attempt to include Perl within another package, it is important that you read the licenses yourself and determine whether what you're doing follows either of the licenses. The Perl Artistic License is included with every Perl distribution as a file named Artistic. You can view the GNU General Public License at

The licenses allow Perl to be developed and enhanced in an open forum. In this way, all the source code for Perl is visible to whoever wants to read it and suggest changes. This approach encourages good programming and prevents getting locked into proprietary, hidden, and obscured software solutions.

The Development of Perl

The development of the Perl interpreter, the language, and the modules that go along with it in the standard distribution takes place on a mailing list where the developers of Perl propose changes, examine bug reports, and debate what changes should be made to the Perl source code.

Anyone is welcome to participate in this process; that's what Open Source is all about. However, to prevent chaos, the changes are filtered through a group of core developers who approve or reject the changes and maintain the core of Perl's development. Changes are evaluated on the basis of what's good for Perl, how useful the changes are, and whether anyone has attempted the changes successfully. Larry Wall, who oversees this process, acts in the role of a benevolent dictator, allowing the beneficial changes to occur and vetoing changes he considers harmful.

The current release of Perl is 5.8.6. This reflects a numbering scheme for releases of: major.minor.patchlevel. The major number is the version of the language (5), the minor number is the version of the interpreter (8), and the patchlevel (6) indicates the patch level of this interpreter's code.

The even-numbered minor releases are production quality, the odd ones (5.7, 5.9) are unstable development releases. The next significant production release of Perl will be called 5.10.

    Previous Table of Contents Next
    © 2000- NIV