IMHO, a JAPH should be short enough to fit in an email sig. Here's my attempt to compress and obfuscate your code:
use Curses;use integer;@S=split(//,'Just Another Perl Hacker,');
initscr;$C=(COLS()-@S)/2;%j=map{(LINES()/2)."/$_"=>1}($C..$C+@S-1);
$x=mr(0..LINES()-1);$y=mr(0..COLS()-1);$l=mr(32..126);
while(my($x,$y,$l)=(&$x,&$y,(keys%r==@S)?' ':chr(&$l))){
if($j{"$x/$y"}){next if($r{$y});$r{$y}++ if($S[$y-$C] eq $l)}
addch($x,$y,$l);refresh;}sub mr{my@a=@_;sub{$a[rand @a]}}
I couldn't get it down to 4 lines, but who's picky about USENET .sig files anymore anyways? :)
Update: Turns out I'm still picky about USENET .sig files. This can be formatted into 4 80-column lines; it's formatted as 5 70-column lines here because otherwise PM wraps it into unreadability.
use Curses;@S=split(//,'Just Another Perl Hacker,');initscr;$C=int((
&COLS-@S)/2);%j=map{int(&LINES/2)."/$_"=>1}($C..$C+@S-1);($X,$Y,$L)=
map{my$n=$_;sub{int rand $n}}(&LINES,&COLS,95);while(($x,$y,$l)=(&$X,
&$Y,chr(32+(keys%r==@S?0:&$L)))){if($j{"$x/$y"}){next if($r{$y});
$r{$y}++if($S[$y-$C] eq $l)}addch($x,$y,$l);refresh}
|