I haven't done one of these in a while, but got the idea for this while I was tracking down some misbehaving code that I had to replace - having seen this presentation at YAPC::NA helped.
Apologies for the non-standard form.
*{" |$ / |$ /|___|"}=sub{ust};*{qq%.| $/ |--.$/ | |%}=sub{q@a
+cker,@};
*{qq* __.$ / --|$ / |__|*}=sub{q.nother.};*{qq#.---$/ |__)$/ | #}=s
+ub{erl};
print $ _ ,$ _ -> (), $ / for grep {m { ^[ .|] }x } sort keys % {
+* :: };
--chargrill
s**lil*; $*=join'',sort split q**; s;.*;grr; &&s+(.(.)).+$2$1+; $; =
qq-$_-;s,.*,ahc,;$,.=chop for split q,,,reverse;print for($,,$;,$*,$/)