|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 today—that is, mostly textual. File transfers and remote logins rounded out the traffic on the Internet.
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 objects—which you haven't seen yet—were introduced. In October 1996, the second edition of Programming Perl ("The Blue Camel") was released, documenting these new features.
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:
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 http://www.gnu.org.
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.
|Previous||Table of Contents||Next|