Actually, this one was all done by hand (as opposed to Just Another Larry, where I freely admit to using a tool to get my initial picture :)). I *looked* at some generated-ASCII-art as a starting point for the formatting, but with something like this (where, as halley says, the code is using compulsory whitespace etc.) it's near-impossible to automate. You just have to fiddle around until it fits. If you look carefully, you'll see there's lots of 'cheating' going on - the '+' sign in the middle of the downstroke for instance (where I would have loved to have been able to stick another 'sub' or 'for'), or the 'print join' in the tail...an automatic version would presumably have found a better 'fit'.

When putting a smiley right before a closing parenthesis, do you:

Use two parentheses: (Like this: :) )
Use one parenthesis: (Like this: :)
Reverse direction of the smiley: (Like this: (: )
Use angle/square brackets instead of parentheses
Use C-style commenting to set the smiley off from the closing parenthesis
Make the smiley a dunce: (:>
I disapprove of emoticons
Other