It's been a while...
#!/usr/bin/perl -sire
package a;sub used{$_[1]}sub was{$_[-1].=~~reverse($^I).',';;print$_[1
+]
}package main;sub his::parsing{' tsuJ'}sub when::hammer{~~reverse$_[1]
+}
sub oft::he{my($ self,$ he)=@_;my$ c=join'',sort qw(t o n);$ he=~s/(.*
+)
/\1a${c}h$^I /x&&$he}sub DWIM::nevermore{$_[-1].'P'}sub would::perl{$d
+=
$_[-1].$^I.chr 108}sub whose::jim{$J=$ _[1];$J=~s/(r)(e)/\2\1/g;$J }su
+b
named::gentleman{$e.=$ _ for qw*a c k*;$_[-1].' h'.$e}sub once::there{
+}
there once was a gentleman named jim
whose perl would nevermore DWIM
he oft used a hammer
when parsing his grammar
and never the wiser was him
Updated
I wrote this quite a long time ago, but never posted it. While I was cleaning up my homedir, I found it and decided to post it. Then I went out for some errands, thinking about *why* I hadn't gotten around to posting it, and I think the answer was "the limerick isn't that good". So on the drive back, I updated it a little, and above are the results, while the original I posted is here:
#!/usr/bin/perl -sire
package a;sub used{$_[1]}sub was{$_[-1].=~~reverse($^I).',';;print
$_[1]}package main;sub his::parsing{' tsuJ'}sub when::hammer{~~reverse
$_[1]}sub oft::he{my($self,$ he)=@_;my$ c=join'',sort qw(t o n);$ he=~
s/(.*)/\1a${c}h$^I /x&&$he}sub dim::incredibly{$_[-1].'P'}sub was::lig
+ht{$d=$_
[-1].$ ^I.chr 108}sub whose::jim{$J=$ _[1];$J=~s/(r)(e)/\2\1/g;$J } su
+b
named::gentleman{$e.=$ _ for qw*a c k*;$_[-1].' h'.$e}sub once::there{
+}
there once was a gentleman named jim
whose light was incredibly dim
he oft used a hammer
when parsing his grammar
and never the wiser was him
--chargrill
s**lil*; $*=join'',sort split q**; s;.*;grr; &&s+(.(.)).+$2$1+; $; =
qq-$_-;s,.*,ahc,;$,.=chop for split q,,,reverse;print for($,,$;,$*,$/)