|Do you know where your variables are?|
This meditation introduces a series of articles on the history of the lighter side of Perl culture.
Somewhat arbitrarily, I've categorized the lighter side of Perl culture as follows:
This first installment covers the first two categories above. Later categories are covered in later installments.
Much of Perl's culture derives from earlier practice in other programming languages. Perl Obfus, for example, carry on the grand tradition of the International Obfuscated C competitions of the 1980s. Indeed, a certain L.Wall was a prominent place-getter in these early IOC competitions -- though, contrary to persistent rumour, he did not submit the Perl C sources (principally because they exceeded the 1K limit). Golf too was informally played by APL enthusiasts in the 1960s, as indicated by this famous 1972 Edsger Dijkstra quote.
But what of Perl's Joke Modules? Are they truly unique to Perl culture? Though I'm not aware of Joke Modules being written in other programming languages, I'd love to hear about any you may know of.
What was the first Perl Joke Module?
Dredging through some old fwp emails, I believe the first Perl joke script was written in 1989 or 1990 and was a cousin of merlyn's sh2perl that emailed your shell script to either comp.lang.perl or Tom Christiansen, asking for a Perl version to be written. Update: This early variation of sh2perl seems to be an urban myth (see responses from brian_d_foy and merlyn below). Around that time, Ian Phillipps posted a joke perl program-generator that invited you to select a function for a program; all it did was post to c.l.p. with a title of "I don't think perl can $title", with Followups-to 'poster'. In those days, there were plenty of Perl zealots eager to prove that Perl could indeed do it! Verifying the above claim is problematic due to the disastrous convex disk pack crash of '89 (the original Perl mailing list archives and the early c.l.p archives have been lost for all time due to a disk pack crash at convex, where they were kept at the time).
If you disqualify these early versions of sh2perl (on the grounds that they were scripts, not modules), then perhaps the earliest Perl Joke module is less.pm, written almost certainly by L. Wall around 1994. This charming module has the further distinction of being the only joke module in the Perl core.
The pre-Acme Years
Before the Acme namespace was born in 2001, there were a number of Joke Modules released, notably:
Though I suspect this top-level namespace trampling irritated the CPAN bigwigs, there were not enough of these modules to provoke them to do anything about it. The Silly:: namespace was thought up, but, mercifully, never caught on, only a couple of really silly modules employing that awful name.
The Acme Namespace
Within a few months of TheDamian releasing Bleach on Feb 21, 2001 there were a gaggle of modules all doing that sort of thing (update: see The History of Acme::Bleach and Acme::EyeDrops for more detail). All these new top-level modules are now really annoying the CPAN bigwigs. Yet TheDamian manages to placate them by sending out a plea to all joke module authors in mid-May:
I think we should make the top-level namespace genuinely amusing in its own right...and a source of future opportunities for humour too. To that end, I propose that we all migrate our modules to the Acme:: namespace.
Since that time, the Acme namespace has grown steadily, today boasting over 100 modules: a unique achievement in the world of computer programming. Some Joke Modules that are popular here at the Monastery can be found in Most fascinating but *not really* useful modules.
Mailing List Theatre
By Mailing List Theatre, I mean the humorous -- and often theatrical -- exchanges occurring in Perl cyberspace: on newsgroups, bulletin boards, mailing lists, Perl Monks and the like.
These humorous exchanges took place from Perl's earliest days -- especially when L.Wall was responding to R.Schwartz. As for identifying the first, that seems problematic because the original Perl mailing list archives and the early c.l.p archives have been lost for all time due to a disk pack crash at convex (where they were kept at the time).
Anyway, here's a random selection that I found amusing:
Please forgive me for missing many funny exchanges out there and here at the Monastery. And please feel free to pipe up with your own favourites.
Updated 3-May-2008: Fixed broken links. Reorganized material. 25-April-2012: corrected Bleach release date (Apr 1 2001 -> Feb 21 2001), added The History of Acme::Bleach and Acme::EyeDrops link.