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)
In reply to Some JAPHs by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |