JAPH

JAPH是Just another Perl hacker（中文：另一個Perl黑客）的縮寫，指一個可以打印出“Just another Perl hacker,”的Perl程序。（結尾的逗號有時候也可以忽略。）
JAPH程序通常會使用一種極端混淆的編寫方式，在這一點上與混亂C語言有著相同的精神。最早的JAPH是由Randal L. Schwartz發表在comp.lang.perl新聞組，他將一段可以打印出JAPH的Perl代碼放在自己的簽名檔裡。此後，編寫JAPH成為Perl社區的一種網絡文化。

**例子**
一段完全沒有混淆的JAPH代碼：
print "Just another Perl hacker,";
一段嵌入JAPH的晦澀代碼：
$_='987;s/^(\d+)/$1-1/e;$1?eval:print"Just another Perl hacker,"';eval;
表面上看和打印JAPH完全沒關係的代碼：
$_ = "wftedskaebjgdpjgidbsmnjgc";
tr/a-z/oh, turtleneck Phrase Jar!/; print;
一段不含任何標點，只使用了Perl關鍵字的代碼：
not exp log srand xor s qq qx xor
s x x length uc ord and print chr
ord for qw q join use sub tied qx
xor eval xor print qq q q xor int
eval lc q m cos and print chr ord
for qw y abs ne open tied hex exp
ref y m xor scalar srand print qq
q q xor int eval lc qq y sqrt cos
and print chr ord for qw x printf
each return local x y or print qq
s s and eval q s undef or oct xor
time xor ref print chr int ord lc
foreach qw y hex alarm chdir kill
exec return y s gt sin sort split
一段只含有標點，不含任何數字和字母的代碼（由 Eric Roode date=20190501222647 編寫，只能在Unix和Unix-like系統上運行）：
`$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=(
$!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++;
$_++;$_++;($_,$\,$,)=($~.$"."$;$/$%$?$_$\$,$:$%$?",$"&$~,$#,);$,++
$,++;$^|=$";`$_$\$,$/$:$;$~$*$%$?$.$~$*${#}$%$?$;$\$"$^$~$*.>&$=` 
一個更短的純標點代碼，基於CPAN上的 EyeDropsdate=20191017175737 模塊生成：
**~('(?{'.('-)@.)@_*(@!@/)(@)@-@),@(@@+@)'
^')@`}`()`@.@@%`}%@`@!#@%').',"})')
一段形狀像單峰駱駝（Perl的標誌）的ASCII藝術代碼，運行後也會輸出JAPH和駱駝組成的動態的ASCII字符畫：
#
sub j(\$){($
P,$V)=                      @_;while($$P=~s:^
(())::x){                    $V+=('('eq$1)?-32:31
}$V+=ord(  substr(                 $$P,0,1,""))-74} sub a{
my($I,$K,$  J,$L)=@_               ;$I=int($I*$M/$Z);$K=int(
$K*$M/$Z);$J=int($J*$M             /$Z);$L=int($L*$M/$Z); $G=$
J-$I;$F=$L-$K;$E=(abs($          G)>=abs($F))?$G:$F;($E{$K
+int($i*$F/$E)      }->{$I+int($i*$G/$E)}=1}}sub p{$D={};$
Z=$z
.01;map{    $H=$_;$I=$N=j$H;$K=$O=j$H;while($H){$q=ord
substr($H,0,1,"" );if(42==$q){$J=j$H;$L=j$H}else{$q-=43;$L =$q
%9;$J=($q-$L)/9;$L=$q-9*$J-4;$J-=4}$J+=$I;$L+=$K;a($I,$K,$J,$ L);
($I,$K)=($J,$L)}a($I,$K,$N,$O)}@_;my$T;map{$y=$_;map{ $T.=$D->{$y}
->{$_}?$\:' '}(-59..59);$T.="\n"}(-23..23);print"\eH$T"}$w= eval{
require Win32::Console::ANSI};$b=$w?'1;7;':"";($j,$u,$s,$t,$a,$n,$o
,$h,$c,$k,$p,$e,$r,$l,$C)=split/}/,'Tw*JSK8IAg*PJ*J@wR}*JR*QJ*J'.
'BA*JQK8I*JC}KUzBAIJT*QJR?-Re\RI'.'}Tn*JQwRAI*JDnR8QAU}wT8KT'.
'n*JEI*EJR*QJ*JR*DJ@IQ}*JSe*JDn*JPe*'.'JBI/KI}T8@?PcdnfgVCBRcP'.
'?ABKV}*JWe*JDn*JPe*JC?8B*JE};Vq*OJQ/IP'.'wQ}*JWeOe{n*EERk8;'.
'J*JC}/U*OJdOI@*BJ*JXn*J>wU}CWq*OJc8KJ?OeU/T*QJP?}*JSe*JCnTe'.
'QIAKJR}*JVwRAI*J?}T*RJcJI\3;UUq*PMwVWWCT*DM*SJ'.  'ZPZ'.
'PZa\UKVgogK9K*QJ\nRI@*EH@IddRQTTT3odk*JE'.  'Z\U'.
'{T*JPKTKK*OJQIOPIQIOgUKU\k*JE+J+J5R5AI*EJ00'.  'BCB*'.
'DMKKJIRQ+*EJ0*EK';sub h{$\ = qw(% & @ x)int    rand
4;map{printf  "\e$b;%dm",int(rand 6)+101-60*   ($w

0);system(  "cls")if$w ;($A,$S)=    ($_1,   $
_0);($M,   @,)= split  '}';for(     $z=256
;$z>0; $z   -=$S){$S*=   $A;p @,}      sleep$_
2;while   ($_3&&($    z+=$ S)       

**參見**
國際C語言混亂代碼大賽

**參考資料**

**外部鏈接**
 Cultured Perl: The Elegance of JAPH- JAPH合集 date=20201217181950 , 一個在CPAN上整理的JAPH合集。- Obfuscated codedate=20151207023850 , PerlMonks中分享混亂代碼的節點，其中有很多JAPH。