Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

The Top Ten Perl Poems

by eyepopslikeamosquito (Chancellor)
on Dec 26, 2014 at 07:04 UTC ( #1111395=perlmeditation: print w/replies, xml ) Need Help??

Following on from The Top Ten Perl Obfus, let's count down the top ten highest rated Perl Monks poems of all time.

Since I cannot super-search by node reputation, please note that this list is based only on some non-exhaustive searching and my fallible memory. So it's quite likely I've overlooked a deserving poem. If so, please let us know, and I'll correct the root node. Note that, to make the top ten, a poem needs a reputation of at least 120.

That said, please feel free to mention any poem you consider deserving of a wider audience, even if it does not meet the formal reputation criteria. For example, I'd like to recognize and congratulate liverpole for pulling off a brilliant stunt of posting a poem entitled 600000 nodes as the 600000th PerlMonks node!

Unlike obfus, I discovered the top ten qualification criteria for poetry is not so clear-cut. For example, what many folks believe to be the finest Perl Monk node of all time, namely 1st Monasterians by Erudil, was posted not as a poem, but a meditation. Though somewhat poetic, I judged that this node did not qualify because it was not a Perl poem and was not posted in the Perl Poetry section. Curiously, a response to this node, namely Re: 1st Monasterians by japhy, did qualify because, though it too was not posted in the Poetry section, it was definitely a Perl poem. Conversely, though posted in the Perl Poetry section, I chose to disqualify Aaah, spring (A Very Special Perlmonks Contest) by boo_radley because it was a poetry competition, rather than a poem. Admittedly, these decisions were somewhat arbitrary, and someone else may have decided differently.

Now to work.

No 10: Stayin' Alive (with CPAN) by joecamel Feb 05 2004 rep:120+

Well, you can tell by the way I use File::Lock
I'm a Perl Monk: no time to talk
Got DBI and Test::More,
been reusin' code since version four

You know it's all right. It's okay.
With GD::Graph and Class::Flyweight.
We don't have time to reinvent
so we get it from CPAN.

Whether you're a hacker or whether you're a slacker
You're stayin' alive, stayin' alive.
net communicatin' and input validatin',
And we're stayin' alive, stayin' alive.
Ah, ha, ha, ha, stayin' alive, stayin' alive.
Ah, ha, ha, ha, stayin' alive.

To the tune of Stayin' Alive by the Bee Gees.

Though not a prolific poster, joecamel produced a number of fine poems and obfus, such as Everybody was Obfuscating and It Came From the Crypt!. A true Perl Monk artist.

No 9.3: The Tao of Programming, Chapter 1 by Felonious Oct 08, 2002 rep:120+

package Tao::Book::1; # The silent void $master_programmer = bless \$programmer, 'Tao'; $master_programmer->spake(qq{ When you have learned to snatch the erro +r code from the trap frame, it will be time for you to leave. }); # 1.1 () = do { open STDOUT, ">/dev/null"; 1 while $mystery; $mystery =~ /(\001|\000)+/; $_ = $mystery; *{'Tao of Programming'} = *_; if ($tao = 'great') { $^O = 'great'; } if ($^O eq 'great') { $^X = 'great'; } if ($^X eq 'great') { $0 = 'great'; } for $user (@world) { $user->{':)'}++ } (sub { $morning->{wind} = @_; return $morning })->(${'Tao of Pr +ogramming'}); }; ...

Based on The Tao of Programming.

No 9: The Tragedy of 9/11/2001 by jryan Sep 12 2001 rep:120+

SHOCK: { fills (my $heart); unbelief (sinks=>'in'); END { my $sorrow; untie my $pain; } } ANGER: { fills (my $heart); curse $the{Dancers}; kill $the{Guilty}; DESTROY {$the{Mastermind}} } GRIEF: { fills (my $heart); bless $the{Dead}; thank (@{$the{Volunteers}}); BEGIN {a new()} } # structure: There are no structures; they have all collapsed. # use strict: There is no discipline; only chaos of madmen. # warnings: There is no warnings; there WERE no warnings.

No 8: Ogden Nash, 1902-1971 by VSarkiss Aug 20 2002 rep:120+

# The Cow # by Ogden Nash # # The cow is of the bovine ilk; # One end is moo, the other, milk. # package cow; @ISA = qw(bovine); push @cow, 'moo'; unshift @cow, 'milk';

# Reflections on Ice-Breaking # by Ogden Nash # # Candy # Is Dandy # But liquor # Is quicker. package candy; @ISA = qw(dandy); package liquor; 1;

Sadly, VSarkiss passed away around seven years ago. He contributed many excellent nodes during his time here, including this tribute to Ogden Nash.

No 7.5: Use strict or unlink it by Jouke Apr 13 2004 rep:130+

A monk who loved die more than exit
felt blessed foreach time he could use split
he pushed and he popped
he chomped and he chopped
and warned "Just use strict or unlink it!"

A clever limerick by Jouke.

No 7: Bohemian Rhapsody (part 1) by katgirl Jun 13 2002 rep:140+

require(AirGuitar); if($this eq "real life" | "just fantasy"){ $caught = $in{'a-landslide'}; $no = "\from reality"; } open (YOUR, "$eyes"); $look++ => "the skies" && "c"; $money = 0; $sympathy=0; while ($i, $come, $i, $go){ $i = "easy" } $little++; $little--; if ($wind = "blows") { !$matter => me } $parent = "female"; $me = "murderer"; $gun = head{'man'}; &pull_trigger; if($gun eq "loaded"){ die('man') } tell($parent) => $life = "short"; $life = undef; $parent .- $tears; if (!$back eq this(time)){ $day .+1; } { print "Carry on"; redo; } $matter = 0; if($now eq "too late"){ my $time => "come";} my $spine = $shivers--; $body = $aching . all{'the(time)'}; tell(all) => "bye bye"; @you <= "leave"; $face =~ tr/u/th/; $parent = 000; $i != "want" => die; $i => some(time). s/never/born/ . @all;

I absolutely love this poem! A brilliant tribute to one of the finest songs of all time, Bohemian Rhapsody.

Sadly, katgirl has been absent for eight years now and so seems unlikely to write any more poems. Given her outstanding talent, that's a pity.

No 6.9: Great Perl Literature by petdance Oct 03 2001 rep:140+

scalar @monte_cristo; sub task { kill( SIGHUP, "mockingbird" ); } $_**(1/2); $_**(1/3); $_**(1/4); for ( @whom ) { toll( chr(7) ); } $nights[11]; sub king { return; } $here..$eternity undef $arms; if ( 1 ) { $postman->ring() for (1..2); } grep /Red October/, @_;

A quiz in the form of a poem. Which book does each Perl code snippet represent?

No 6.5: Perl Mambo by jkahn Sep 15 2002 rep:140+

do # to the tune of 'Mambo'; #5, apologies to Lou Bega our (@syntax) = ('syncopated', 'baby'); sub refrain { my (%little_bit_of) = ('regex' =~ /(matching) (string)/); @ little_bit_of{'shell', 'calls'} = `do_that thing`; $little_bit_of{C} = sub { for(@syntax){ $little_bit_of{sed} =~ s!\\!!g; # "strip backwhacks" } }; @ { $little_bit_of{'OO'}->can('be_nice') } = @ little_bit_of{'lisp', 'lists'} = map {$_} splice(@_); @ little_bit_of{'rich', 'language'} = ('easy', 'puns'); @ { $little_bit_of{'Perl'} } = ('number' => 1); return [instrumental bridge]; }

To the tune of Mambo No. 5 by Lou Bega.

No 6.3: Monk Levels by MZSanford Jul 24 2001 rep:150+

bless \@monks; $initiate = recv(MONASTERY,$enlightenment,$daily,0); $novice = seek(MONASTERY,$enlightenment,0); $acolyte = sleep && eat && study $SOPW && redo; $scribe = require disipline; $monk = print MONASTERY rand($wisdom); $friar = accept(MONASTERY,applause); $abbot = seek(MONASTERY,$enlightenment,2); $bishop = join 'E','d','i','t','o','r','s'; $pontiff = push @monks, $improve; $saint = 1;

A poetic tribute to the PerlMonks Voting/Experience system.

No 6.1: I Was a Saint (sung to the tune of "I Will Survive") by sauoq Nov 01 2005 rep:150+

At first I was afraid, I was petrified
Kept thinking I could never reach those levels up so high
Then I spent a few minutes thinking maybe it wouldn't take so long
And I grew strong
And I resolved to play along

And so I'm no longer a Saint
I just walked in to find that where so many were they now just ain't
I would have taken that screen shot
Recorded it for posterity
If I had known for just one second it'd be gone so suddenly

To the tune of I Will Survive by Gloria Gaynor.

Presumably this funny song was composed to get more XP quick in response to Petruchio posting A Level Playing Field the day before. See also: Levels of Monks and Translation of the Perlmonks levels ....

No. 6: R0z3z 4r3 R3d by dws Mar 10 2001 rep:160+

Roses are red,
Violets are blue,
Taint check your scripts,
0r 1 w1ll 0wn u.

Roses are red,
Tulips are fine,
Eval that param,
And u'r b0x w1ll b3 m1n3.

Roses are funny,
But this code is a hoot.
open() that $string,
And z00n 1'l h4v3 r00t!

Top 30 Perl Monk dws further clarified the intent of this poem:

The "l337 sp34k" in the poem alludes to the consequences of deploying poor code, particularly CGIs that don't taint check their parameters. Read it from the point of view of a script kiddie. It's intended to grate on your ears.

No 5.5: I just want to siiiing! by Petruchio Nov 22 2000 rep:180+

He's a Perl Hack, and he's okay,
He hacks all night and he sleeps all day!

I write my code, I take lunch breaks,
I go to the Monastery!
Sometimes I post my homework,
And merlyn yells at me!

He writes his code, he takes lunch breaks,
He goes to the Monastery!
Sometimes he posts his homework,
And merlyn yells at... him.

He's a Perl Hack, and he's okay,
He hacks all night and he sleeps all day!

I debug code, I call in sick,
I stay home and play Doom!
I write annoying letters
About MonkMail to vroom!

To the tune of The Lumberjack Song by Monty Python.

Quite a bit of interesting PerlMonks history in this ditty ... old homework posts, merlyn, vroom, AgentM and the protracted MonkMail! campaign.

No 5: The strictures, according to Seuss by toolic May 14 2008 rep:180+

Do you like use warnings and strict?
I do not like use warnings and strict.
Do you like them here or there?
I do not like them here or there?
I do not like them anywhere.

toolic composed this clever Perl tribute to Dr Suess and Green Eggs and Ham.

No 4: my @chickens by pjf Oct 04 2001 rep:180+

use Carp qw/cluck/; my @chickens; sleep until $dawn; cluck $loudly until open $coop; exit $coop; chomp $food and accept($scraps,$seed); shift @straw, pop @eggs and cluck $more; until ($dusk) { seek($many,$worms,$bugs); join flock($other,@chickens) if split /from others/; tell WORLD,"sky is falling" if $airplane; } return 2,$coop and sleep until $dawn;

After quietly contemplating the chickens in his backyard, subsistence farmer and Perl expert pjf wittily summarizes their behavior in just half a page of Perl.

By the way, pjf is one of the few monks I've met in real life. In addition to running chickens, he has a keen interest in picking and eating wild plants that you won't find in any supermarket.

No 3: The Doom of the Noldor by Erudil Jun 13 2000 rep:200+

# The Doom of the Noldor / The Prophecy of the North # J. R. R. Tolkien - Quenta Silmarillion # # Tears unnumbered ye shall shed; # and the Valar will fence Valinor against you, # and shut you out, # so that not even the echo of your lamentation # shall pass over the mountains. # # On the House of Feanor the wrath of the Valar lieth # from the West unto the uttermost East, # and upon all that will follow them # it shall be laid also. # $_= 'The Doom of the Noldor' or 'The Prophecy of the North'; while( /Doom/ ) { shed("tears "); do { $Valar{'fence_of_Valinor'}++ and $shut_out; } until not( $echo_of_lamentation > $mountains ); for( $West..$uttermost_East ) { map{$_ = $Valar{'wrath'}} (@House_of_Feanor, @followers); } } sub shed{print shift}

Yet another Erudil classic, this time a Perl poem based on the works of J.R.R.Tolkien.

No 2: Re: 1st Monasterians by japhy Mar 06 2002 rep:240+

substr("Erudil to the Monasterians", 0, 1); 1 . Erudil->isa(PerlHacker) .. [ "vroom", @saints, @monastery ]; 2 . undef $^W, close(STDERR) and !$! for 1..100; 3 . -M Erudil > 2*365 and $appreciation{$_}++ for qw( place custodians members ); 4 . do { for (@brothers, @sisters) { listen up, hearken } continue { to: wait() and study() for grep !clue($_) && ignorant($_), Visitors- To-Our-Blessed-Monastery } }; 5 . do { not rebuke($words{harsh} =~ /RTFM/), but }, lead-with-URLs if wisdom->isa( goal-of-theirs); 6 . allow for newbies and instruct(grep $_, @contents); 7. for 0 < grep errant || ignorant, @us; 8 . consider; these: 9 . ($^H & 0x602) and bless($they), for typos < troubles; 10 . $^W and bless($they), for $errors -> (0); 11 . %CGI:: and bless($they), for eval { pass-parameters } and not $@; 12 . eval "use CPAN; 1" and bless($they), for $wheels_not_reinvented > 1e9; 13 . qr// and bless($they), for HTML-time == 0; 14 . insults? ridicule? blessed: are: you, for time and effort < theirs; 15 . grep refuser($_), @those ? (do { not allow flame wars } or disrepute): yourselves or Monastery; 16 . study well::, $$ = 0 for grep cool lost, grep flamewar winner, @men; time < age-of-reason and 17 . those who suffer thus, do { consider: like me, close mouth, select words, carefully, to edify, to inform }; 18 . $_++ for @brothers, @sisters, restorers-of-faith and $^T = time, 19 . good-syntax and efficient- algorithms; 20 . eval { $$ref; 1 } and study, study Perl, study bless$ed, Perl; 21 . Amen and amen;

japhy converts Erudil's 1st Monasterians masterpiece into a Perl poem.

No 1: Fish dinner by suaveant Jun 04 2001 rep:320+

use Carp; unpack fish, spices; croak fish if $alive; study recipe, pop in, time; BEGIN {meal}; tied %bib; scalar fish; fork, split; sqrt lemon; glob tartarsauce; chop, open(MOUTH), chomp; unlink flesh; truncate bone, chomp; untie %bib; push plate; END {meal}; sleep now;

I found this really funny and upvoted it without hesitation when I first set eyes on it years ago. Admittedly, suaveant marketed this node relentlessly by making it part of his sig. I still feel this is a very worthy number one, a fantastic poem.

Since reading this poem, I always pronounce the sqrt function as "squirt". :)


Updated Dec 27 2014: Added poem 5.5, poem 6.1, poem 6.3, poem 6.5 poem 6.9, poem 7.5, poem 9.3 which I had missed in my original post (thanks tye). Omitted 6.7 as it is a poetry competition, not a poem.

Replies are listed 'Best First'.
Re: The Top Ten Perl Poems (leftovers)
by tye (Sage) on Dec 26, 2014 at 19:23 UTC
Re: The Top Ten Perl Poems
by Ratazong (Monsignor) on Dec 26, 2014 at 12:29 UTC

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlmeditation [id://1111395]
Approved by atcroft
Front-paged by Old_Gray_Bear
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (8)
As of 2017-12-18 20:39 GMT
Find Nodes?
    Voting Booth?
    What programming language do you hate the most?

    Results (497 votes). Check out past polls.