एक अन्य पर्ल हैकर
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
(Learn how and when to remove this template message) |
जस्ट अदर पर्ल हैकर, या जेएपीएच, आम तौर पर एक पर्ल प्रोग्राम को संदर्भित करता है जो जस्ट अदर पर्ल हैकर प्रिंट करता है, (अल्पविराम विहित है लेकिन कभी-कभी हटा दिया जाता है)। लघु JAPH कार्यक्रमों का उपयोग अक्सर ऑनलाइन इंटरनेट मंच में हस्ताक्षर ब्लॉक के रूप में, या टीशर्ट डिज़ाइन के रूप में किया जाता है। हस्ताक्षर के लिए वाक्यांश या संक्षिप्त नाम का उपयोग कभी-कभी (कंप्यूटर प्रोग्रामिंग के बिना) भी किया जाता है।
जेएपीएच कार्यक्रम अंतरराष्ट्रीय ऑबफुसेटेड सी कोड प्रतियोगिता की भावना में, अत्यंत अस्पष्ट कोड विधियों का उपयोग करके शास्त्रीय रूप से किए जाते हैं। हाल ही में, जैसा कि यह घटना प्रसिद्ध हो गई है, इस वाक्यांश का उपयोग कभी-कभी सामान्य उदाहरणों में किया जाता है (बिना किसी भ्रम के)।
छोटे पर्ल कार्यक्रमों का उपयोग करने का विचार जो एक हस्ताक्षर को हस्ताक्षर के रूप में प्रिंट करते हैं, रैंडल एल. श्वार्ट्ज द्वारा समाचार समूह comp.lang.perl पर अपनी पोस्टिंग में उत्पन्न हुआ था।[1] उन्होंने कई जेएपीएच लिखे जो नीचे दिखाए गए हैं।
उदाहरण
जेएपीएच कार्यक्रम बिना किसी शंका के:
print "Just another Perl hacker,";
अपारदर्शी कोड में JAPH एम्बेड करना:
$_='987;s/^(\d+)/$1-1/e;$1?eval:print"Just another Perl hacker,"';eval;
ट्रांसपोज़्ड स्ट्रिंग शाब्दिक से JAPH को डिकोड करना:
$_="krJhruaesrltre c a cnP,ohet";$_.=$1,print$2while s/(..)(.)//;
JAPH को अलग प्रक्रियाओं के रूप में प्रिंट करना:
for $i (0..4) {
if (!fork) {
$i == 0 or not { $SIG{INT} = sub { print "J" } } or
$i == 1 or not { $SIG{INT} = sub { print "A" } } or
$i == 2 or not { $SIG{INT} = sub { print "P" } } or
$i == 3 or not { $SIG{INT} = sub { print "H" } } ;
sleep $i;
last;
}
}
kill INT => $$;
ऐसा प्रतीत होता है मानो यह JAPH को प्रिंट करने से पूरी तरह से असंबंधित कुछ कर रहा है:
$_ = "wftedskaebjgdpjgidbsmnjgc";
tr/a-z/oh, turtleneck Phrase Jar!/; print;
प्रत्येक अक्षर को सही क्रम में प्रिंट करने के लिए फोर्किंग प्रक्रियाएं:[2]
@P=split//,".URRUU\c8R";@d=split//,"\nrekcah xinU / lreP rehtona tsuJ";sub p{
@p{"r$p","u$p"}=(P,P);pipe"r$p","u$p";++$p;($q*=2)+=$f=!fork;map{$P=$P[$f^ord
($p{$_})&6];$p{$_}=/ ^$P/ix?$P:close$_}keys%p}p;p;p;p;p;map{$p{$_}=~/^[P.]/&&
close$_}%p;wait until$?;map{/^r/&&<$_>}%p;$_=$d[$q];sleep rand(2)if/\S/;print
केवल पर्ल कीवर्ड (कंप्यूटर प्रोग्रामिंग) का उपयोग करना (कोई विराम चिह्न नहीं):[3] <सिंटैक्सहाइलाइट लैंग= पर्ल6 > ऍक्स्प लॉग नहीं srand xor s qq qx xor एस एक्स एक्स लंबाई यूसी ऑर्ड और प्रिंट सीएचआर क्यूडब्ल्यू क्यू जॉइन के लिए ऑर्ड सब टाईड क्यूएक्स का उपयोग करें एक्सओआर इवल एक्सओआर प्रिंट क्यूक्यू क्यू क्यू एक्सओआर इंट ईवल एलसी क्यू एम कॉस और प्रिंट सीएचआर ऑर्ड क्यूडब्ल्यू वाई एबीएस एनई ओपन टाईड हेक्स एक्सपी के लिए रेफरी वाई एम एक्सओआर स्केलर सरैंड प्रिंट क्यूक्यू क्यू क्यू एक्सओआर इंट ईवल एलसी क्यूक्यू वाई एसक्यूआरटी कॉस और qw x printf के लिए chr ord प्रिंट करें प्रत्येक स्थानीय xy या प्रिंट qq लौटाता है s s और eval q s undef या oct xor समय एक्सओआर रेफरी प्रिंट सीएचआर इंट ऑर्ड एलसी फ़ोरैच qw y हेक्स अलार्म chdir किल कार्यकारी वापसी वाई एस जीटी पाप सॉर्ट विभाजन </सिंटैक्सहाइलाइट>
केवल विराम चिह्न का उपयोग करना, कोई अक्षरांकीय वर्ण नहीं। यह पर्ल 5.30.0 के बाद टूट जाता है, क्योंकि $# और $* का उपयोग करने से घातक त्रुटियाँ पैदा होती हैं। यह JAPH एरिक रूड द्वारा लिखा गया था और यह केवल यूनिक्स और यूनिक्स जैसी प्रणालियों पर काम करता है:
सिंटैक्सहाइलाइट लैंग = पर्ल >
`$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$ ,$;,$ ^,$#,$~,$*,$:,@%)=(
$!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/ ,$ ),$=++;$.++;$.++;
$_++;$_++;($_,$\,$,)=($~.$ . $;$/$%[$?]$_$\$,$:$%[$? ] ,$ &$~,$#,);$,++
- $,++;$^|=$ ;`$_$\$,$/$
- $;$~$*$%[$?]$.$~$*${#}$%[$? ]$;$\$ $^$~$*.>&$=`
</सिंटैक्सहाइलाइट>
EyeDrops मॉड्यूल के आधार पर, केवल विराम चिह्न का उपयोग करते हुए एक बहुत छोटा मॉड्यूल:
सिंटैक्सहाइलाइट लैंग = पर्ल > =~('(?{'.('-)@.)@_*([]@!@/)(@)@-@),@@@+@)' ^'][)@]`}`]()`@.@]@%[`}%[@`@!#@%[').', })') </सिंटैक्सहाइलाइट>
ASCII कला (इस साँड़नी -आकार के कोड को काम करने के लिए, कंसोल आकार को कम से कम 119×48 पर सेट करने की आवश्यकता है):[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 @@@@@@@
#@@@@@@@@@@@
यह भी देखें
- हैलो वर्ल्ड! कार्यक्रम
- अस्पष्ट पर्ल प्रतियोगिता
- पर्ल#पर्ल मनोरंजन
संदर्भ
- ↑ Randal L. Schwartz in Usenet message M1HFPVH2JQ.FSF@HALFDOME.HOLDIT.COM explaining the origin of JAPH. Available through Google.com
- ↑ Plover.com
- ↑ Originally posted at perlmonks.org by user blokhead
- ↑ Originally posted at perlmonks.org by user liverpole.
अग्रिम पठन
- Simon Cozens (2005). Advanced Perl Programming. O'Reilly. pp. 261–263. ISBN 9780596004569.
बाहरी संबंध
- Cultured Perl: The Elegance of JAPH
- Cpan.org, a collection of JAPHs at CPAN.
- How does this famous JAPh work? and Fun With Reserved Keywords at Stack Overflow explain how blokhead's code works.