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.

Joke Modules

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.

Thus Acme:: was born. As indicated here, Acme:: is derived not from acme aka Leon Brocard, but from Wile E. Coyote. BTW, Leon gave a nice talk on the Acme Modules at YAPC::Europe 2002.

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.

Links

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.

Comment on The Lighter Side of Perl Culture (Part I): Introduction
Re: The Lighter Side of Perl Culture (Part I)
by brian_d_foy (Abbot) on Nov 28, 2004 at 06:19 UTC

    Anything written in 1989 or 1990 can't be a variation of Randal's sh2perl, which he wrote in 1998 for an April's Fool joke. See the Changes file or The Perl Timeline. Do you have references for the email you dredged up?

    As far as I know, there wasn't a script that would automatically email things to Tom. Early on, his email address got passed around as a csh to Perl translator. Supposedly, Tom would send back Perl versions, although I have yet to meet anyone who used this service.

    Chris Nandor beat sh2perl by a couple months with D'oh, which you should write with the old package notation instead of the double colon.

    --
    brian d foy <bdfoy@cpan.org>

      Thanks for the correction brian. I was working from an old Perl Mongers talk I gave a while back and it seems I got it wrong. I can't find merlyn making any claim of an earlier incarnation of sh2perl, but in this response from Ian Phillipps to Schwern Schwern mentions that a "mythological sh2perl program was one that would email your shell program to either comp.lang.perl (back when there was *only* comp.lang.perl) or Tom Christiansen". (This is also the reference where Ian mentions his little joke program generator).

        My sh2perl came from a codification of a joke that I had used in my llama class from about 1994 onward.

        The joke originated because I had "Sadly, there is no sh2perl" on my page that talked about "a2p" and "s2p", but I wanted to say more about that. So I added that there was a FAQ entry about that (in the very old FAQ) saying that "tchrist@perl.com" had been set up as a mail server to translate shell to Perl, and then explained why that was a joke. But I kept embellishing (as I do with the oldest jokes in the courseware) to say that all you really need to do is change:

        #!/bin/sh Your Shell Script Here
        into
        #!/usr/bin/perl system " Your Shell Script Here ":
        and your shell script "became" a Perl script.

        My sh2perl joke just does that automatically, after having suggested that in class for many years.

        There was never a version that mailed it to tchrist@perl.com... that was only a reference to the old FAQ that somehow got mangled together with my current implementation.

        -- Randal L. Schwartz, Perl hacker
        Be sure to read my standard disclaimer if this is a reply.

Re: The Lighter Side of Perl Culture (Part I)
by jplindstrom (Monsignor) on Nov 28, 2004 at 09:37 UTC
Re: The Lighter Side of Perl Culture (Part I)
by Jenda (Abbot) on Nov 28, 2004 at 17:45 UTC

    MJD's Identity.pm actually evolved into Interpolation.pm which is not just a joke.

    Jenda
    We'd like to help you learn to help yourself
    Look around you, all you see are sympathetic eyes
    Stroll around the grounds until you feel at home
       -- P. Simon in Mrs. Robinson

Re: The Lighter Side of Perl Culture (Part I)
by bm (Hermit) on Nov 29, 2004 at 12:18 UTC
    There is an archive of funny quotes from the Perl newsgroups available at PerlQuotes

    --
    bm
Re: The Lighter Side of Perl Culture (Part I)
by Stevie-O (Friar) on Dec 03, 2004 at 04:17 UTC
    A conversation in freenode #perl eventually led to someone pointing out that '2+2=5 for extremely large values of 2'. And so, Acme::NewMath was born.
    --Stevie-O
    $"=$,,$_=q>|\p4<6 8p<M/_|<('=> .q>.<4-KI<l|2$<6%s!<qn#F<>;$, .=pack'N*',"@{[unpack'C*',$_] }"for split/</;$_=$,,y[A-Z a-z] {}cd;print lc
Re: The Lighter Side of Perl Culture (Part I)
by Anonymous Monk on Dec 10, 2004 at 16:42 UTC
    I dunno, the '5000-line auction script' one looked to me not so much funny as unnecessarily abrasive. Sounds like Randal's right about the code, but he's written his criticism as a series of put-downs. Or is that what's meant to be funny?
      You use "put-down" in a way that I find amusing. I never say anything about the person. I only attack the code, and the behavior of publishing bad code. If you think those are personal attacks, you'll probably be offended at most of how I criticize.

      I'm very clear that you are not your code, and that I am not my code. That's what most professional programmers must acheive to increase their programming skills.

      It's only abrasive when one presumes that "feeling good" is more important than "being effective with your skills". If someone is posting code, they are automatically in the latter category for me. If they're so sensitive that the former is more important, they are not ready for a public code review. {grin}

      -- Randal L. Schwartz, Perl hacker
      Be sure to read my standard disclaimer if this is a reply.

      Of all the examples I gave, this one is perhaps the most theatrical, full of passion, hubris and tragedy. And there are many players on the stage, not just merlyn. Indeed, what I found funniest was the finale where Jenda says: Now at last I can call myself a hacker in the media meaning.

      Whether you find this funny or not depends on personal taste. I did. Some of the language used tickled my funny bone for some reason, such as "Am I a member of a insulting-group?"; "No hard feelings, please, but I think your contribution was a bit to much 'over-dressed'"; "nevermore write publically that my code is insecure - or just prove it!".

      On a more serious note, I feel these sort of scripts (e.g. Matt's Script Archive) present Perl in a very poor light and I applaud merlyn in this case for promptly and publicly dissuading others from using the posted code. Finally, I was saddened by the poster's response to criticism because this was a great opportunity for him to improve. Perhaps the best way to improve your coding skills is to develop a thick hide, post your code to a public forum, and learn from the free code reviews you receive.

Re: The Lighter Side of Perl Culture (Part I)
by bluto (Curate) on Dec 10, 2004 at 19:41 UTC
    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.

    I take it you've never used emacs' large number of modes located in the lisp/play directory? Also 'M-x apropos-zippy' is generally not WORTH trying OUT. :-)

Re: The Lighter Side of Perl Culture (Part I)
by thelenm (Vicar) on Dec 14, 2004 at 21:41 UTC
Re: The Lighter Side of Perl Culture (Part I)
by belg4mit (Prior) on Jan 23, 2005 at 16:01 UTC