fbpx
维基百科

JAPH

JAPHJust another Perl hacker(中文:另一个Perl黑客)的缩写,指一个可以打印出“Just another Perl hacker,”的Perl程序。(结尾的逗号有时候也可以忽略。)

JAPH程序通常会使用一种极端混淆的编写方式,在这一点上与混乱C语言有着相同的精神。最早的JAPH是由Randal L. Schwartz英语Randal L. Schwartz发表在comp.lang.perl新闻组,他将一段可以打印出JAPH的Perl代码放在自己的签名档里。[1]此后,编写JAPH成为Perl社区的一种网络文化[2]

例子

一段完全没有混淆的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关键字的代码:[3]

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 (页面存档备份,存于互联网档案馆)编写,只能在UnixUnix-like系统上运行):

`$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=( $!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++; $_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++ ;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=` 

一个更短的纯标点代码,基于CPAN上的EyeDrops(页面存档备份,存于互联网档案馆)模块生成:

''=~('(?{'.('-)@.)@_*([]@!@/)(@)@-@),@(@@+@)' ^'][)@]`}`]()`@.@]@%[`}%[@`@!#@%[').',"})') 

一段形状像单峰骆驼(Perl的标志)的ASCII艺术代码,运行后也会输出JAPH和骆驼组成的动态的ASCII字符画:[4]

 # 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<0) and($ I,$K)=($J,$L);$E||=.01 ;for($i=0;$i<=abs$E;$i++ ){ $D->{$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"\e[H$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}KUz]BAIJT]*QJ[R?-R[e]\RI'.'}Tn*JQ]wRAI*JDnR8QAU}wT8KT'. ']n*JEI*EJR*QJ]*JR*DJ@IQ[}*JSe*JD[n]*JPe*'.'JBI/KI}T8@?PcdnfgVCBRcP'. '?ABKV]]}*JWe*JD[n]*JPe*JC?8B*JE};Vq*OJQ/IP['.'wQ}*JWeOe{n*EERk8;'. 'J*JC}/U*OJd[OI@*BJ*JXn*J>w]U}CWq*OJc8KJ?O[e]U/T*QJP?}*JSe*JCnTe'. 'QIAKJR}*JV]wRAI*J?}T]*RJcJI[\]3;U]Uq*PM[wV]W]WCT*DM*SJ'. 'ZP[Z'. 'PZa[\]UKVgogK9K*QJ[\]n[RI@*EH@IddR[Q[]T]T]T3o[dk*JE'. '[Z\U'. '{T]*JPKTKK]*OJ[QIO[PIQIO[[gUKU\k*JE+J+J5R5AI*EJ00'. 'BCB*'. 'DMKKJIR[Q+*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) <=256){ p@,}}("". "32}7D$j" ."}AG". "$u}OG" ."$s}WG" ."$t","" ."24}(" ."IJ$a" ."}1G$n" ."}CO$o" ."}GG$t" ."}QC" ."$h}" ."^G$e" ."})IG" ."$r", "32}?" ."H$p}FG$e}QG$r". "}ZC" ."$l", "28}(LC" ."" ."". "$h}:" ."J$a}EG". "$c" ."}M" ."C$k}ZG". "$e" ."}" ."dG$r","18" ."}(" ."D;" ."$C" )}{h(16 ,1,1,0 );h(8, .98,0,0 );h(16 ,1,1,1) ;h(8.0 ,0.98,0, 1); redo}### #written 060204 by #liverpole @@@@@@@ #@@@@@@@@@@@ 

参见

参考资料

本條目部分或全部内容出自以GFDL授權發佈的《自由線上電腦詞典》(FOLDOC)。

  1. ^ Randal L. Schwartz in Usenet message M1HFPVH2JQ.FSF@HALFDOME.HOLDIT.COM explaining the origin of JAPH. Available through Google.com (页面存档备份,存于互联网档案馆
  2. ^ The Lighter Side of Perl Culture (Part II): JAPH. [2015-11-19]. (原始内容于2015-11-19). 
  3. ^ Originally posted at perlmonks.org (页面存档备份,存于互联网档案馆) by user blokhead
  4. ^ Originally posted at perlmonks.org (页面存档备份,存于互联网档案馆) by user liverpole.


外部链接

japh, 是just, another, perl, hacker, 中文, 另一个perl黑客, 的缩写, 指一个可以打印出, just, another, perl, hacker, 的perl程序, 结尾的逗号有时候也可以忽略, 程序通常会使用一种极端混淆的编写方式, 在这一点上与混乱c语言有着相同的精神, 最早的是由randal, schwartz, 英语, randal, schwartz, 发表在comp, lang, perl新闻组, 他将一段可以打印出的perl代码放在自己的签名档里, 此后, 编. JAPH是Just another Perl hacker 中文 另一个Perl黑客 的缩写 指一个可以打印出 Just another Perl hacker 的Perl程序 结尾的逗号有时候也可以忽略 JAPH程序通常会使用一种极端混淆的编写方式 在这一点上与混乱C语言有着相同的精神 最早的JAPH是由Randal L Schwartz 英语 Randal L Schwartz 发表在comp lang perl新闻组 他将一段可以打印出JAPH的Perl代码放在自己的签名档里 1 此后 编写JAPH成为Perl社区的一种网络文化 2 目录 1 例子 2 参见 3 参考资料 4 外部链接例子 编辑一段完全没有混淆的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 o h turtleneck Phrase Jar print 一段不含任何标点 只使用了Perl关键字的代码 3 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 页面存档备份 存于互联网档案馆 编写 只能在Unix和Unix like系统上运行 amp gt amp 一个更短的纯标点代码 基于CPAN上的EyeDrops 页面存档备份 存于互联网档案馆 模块生成 一段形状像单峰骆驼 Perl的标志 的ASCII艺术代码 运行后也会输出JAPH和骆驼组成的动态的ASCII字符画 4 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 gt abs F G F E lt 0 and I K J L E 01 for i 0 i lt abs E i D gt K int i F E gt 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 gt y gt 59 59 T n 23 23 print e H 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 KUz BAIJT QJ R R e RI Tn JQ wRAI JDnR8QAU wT8KT n JEI EJR QJ JR DJ IQ JSe JD n JPe JBI KI T8 PcdnfgVCBRcP ABKV JWe JD n JPe JC 8B JE Vq OJQ IP wQ JWeOe n EERk8 J JC U OJd OI BJ JXn J gt w U CWq OJc8KJ O e U T QJP JSe JCnTe QIAKJR JV wRAI J T RJcJI 3 U Uq PM wV W WCT DM SJ ZP Z PZa UKVgogK9K QJ n RI EH IddR Q T T T3o dk JE Z U T JPKTKK OJ QIO PIQIO gUKU k JE J J5R5AI EJ00 BCB DMKKJIR Q EJ0 EK sub h qw amp 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 gt 0 z S S A p sleep 2 while 3 amp amp z S lt 256 p 32 7D j AG u OG s WG t 24 IJ a 1G n CO o GG t QC h G e IG r 32 H p FG e QG r ZC l 28 LC h J a EG c M C k ZG e dG r 18 D C h 16 1 1 0 h 8 98 0 0 h 16 1 1 1 h 8 0 0 98 0 1 redo written 060204 by liverpole 参见 编辑国际C语言混乱代码大赛参考资料 编辑本條目部分或全部内容出自以GFDL授權發佈的 自由線上電腦詞典 FOLDOC Randal L Schwartz in Usenet message M1HFPVH2JQ FSF HALFDOME HOLDIT COM explaining the origin of JAPH Available through Google com 页面存档备份 存于互联网档案馆 The Lighter Side of Perl Culture Part II JAPH 2015 11 19 原始内容存档于2015 11 19 Originally posted at perlmonks org 页面存档备份 存于互联网档案馆 by user blokhead Originally posted at perlmonks org 页面存档备份 存于互联网档案馆 by user liverpole 外部链接 编辑Cultured Perl The Elegance of JAPH JAPH合集 页面存档备份 存于互联网档案馆 一个在CPAN上整理的JAPH合集 Obfuscated code 页面存档备份 存于互联网档案馆 PerlMonks中分享混乱代码的节点 其中有很多JAPH 取自 https zh wikipedia org w index php title JAPH amp oldid 67886237, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。