Perl: what Larry Wall built when nothing else was quite right
On December 18, 1987, a short message appeared in the comp.sources.misc Usenet newsgroup with the subject line “perl, a language for extracting data and generating reports.” The author was a programmer named Larry Wall, employed at Unisys. He had wanted to call it PEARL, but a real-time control language by that name was already in use in West Germany. He dropped the A, posted a note to Usenet, and that was the announcement.
Wall was solving a problem unglamorous but universal in Unix shops of the era: processing logs, generating reports, moving data between machines. The existing toolkit was an awkward assembly. Sed handled text substitution, AWK handled data extraction, shell scripts handled the glue, and C handled anything that needed to be fast — which meant writing it properly took days. Nothing talked cleanly to anything else, and each tool imposed arbitrary size limits that surfaced only when a job was large enough to matter (Wikipedia). Wall had studied natural and artificial languages at Seattle Pacific University, and the question of how a language should feel to its user was not a detached one for him. He combined sed’s regular expressions, AWK’s data-handling, the shell’s system conventions, and C’s syntax, then stripped out the limits.
The guiding principle, stated plainly in the Perl man page: “Easy things should be easy, and hard things should be possible.” The acronym Practical Extraction and Report Language was offered seriously. Wall also provided the alternative — Pathologically Eclectic Rubbish Lister — with the note that it was equally valid. That tells you something about what kind of language community you are getting into.
The naming situation had been a near miss. Wall had genuinely liked “Pearl” — “a short and memorable word with positive associations,” he said later — and planned to ship under that name. Finding the conflict days before release, he shortened it without ceremony. There is something characteristically Perl about this resolution: identify the constraint, satisfy the minimum required adjustment, and move on.
Nobody in 1987 was thinking about the web, because the web did not yet exist. When Tim Berners-Lee made the first HTTP servers available in 1991 and CGI scripting became the mechanism for building dynamic web pages, Perl was already installed on virtually every Unix server in the world. IMDb, Craigslist, LiveJournal, and Slashdot all ran on it (Wikipedia). For a decade, if a website did anything more interesting than serve a static file, Perl was probably involved. The Comprehensive Perl Archive Network, launched in October 1995, eventually gathered more than 180,000 community-contributed modules (YAPC.tv) — the first large proof that a language’s ecosystem could grow well past anything its creator had designed.
Nearly forty years after that Usenet post, the web has been substantially rebuilt in newer languages. The Perl scripts underneath the old parts of it mostly have not been. That is, in its way, the highest compliment a programming language can receive.
Sources
- Perl — Wikipedia — Release date (December 18, 1987), Wall’s employment at Unisys, the PEARL naming conflict, arbitrary-limits problem with AWK/sed, CGI web impact, notable Perl-powered sites (IMDb, Craigslist, LiveJournal, Slashdot).
- History of Perl — YAPC.tv — Development timeline, CPAN launch (October 1995) and eventual module count, naming story with “positive associations” quote.