This was my first JAPH:

use overload"!",sub{$_=${$_[0]}+1;bless\$_},'neg',sub{$_=${$_[0]}; print+(split//,' erahtcJklnopsu.')[$_];$_=0;bless\$_};$a=0;$_=bless\$a ;-!!!!!! !!!! !!!! !-!!-!-! !!!! !! !- !!!!!!-! !!-!!! !-+-!! !! !! !!!- !! -! -! !! !! !! !! !! !- -! !- !- !! !! -! !! !! -! !! !! !! !! !! -! !! !! !! !! !- !! !-+-!!!! !- !! !! !! !! !! !! !- !!!! !! !! !! !!!!-! !!!!!! $_

This one uses a pretty standard trick, but I find the double-use of the '!' rather satisfying...
(I put this in pre instead of code tags, as the newline is necessary for it to function correctly, so didn't want the reformatting messing it up.)

sub japh {$_.=getc*JAPH;/!/||japh();tr- !$*./;=AHJP_abceghjpstu{-t eh .rPceakras reo nJluh-;print;exit}*JAPH=*DATA;seek*JAPH,0,0;japh;__D +ATA__

And my personal favourite, as it doesn't have an anagram of the JAPH string in it:

BEGIN{for(split//,'79ISjklmqruvwxz|'){my$a=chr( ord^25);*{uc()}=sub{print$a}}};&9(S,M L,J),K &| (Q X,M W,V),&|(&9(K),I);&9(U),&|(R Q,Z X),&7(K)

Replies are listed 'Best First'.
Re: Some JAPHs
by K_M_McMahon (Hermit) on Feb 02, 2005 at 03:31 UTC
    Your first one works with use strict as well, nice.