एक अन्य पर्ल हैकर

From Vigyanwiki
Revision as of 17:29, 8 August 2023 by alpha>Indicwiki (Created page with "{{short description|Frivolous Perl program}} {{multiple issues| {{notablity|date=December 2021}} {{Self-published|date=April 2020}} }} जस्ट अदर पर्...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

जस्ट अदर पर्ल हैकर, या जेएपीएच, आम तौर पर एक पर्ल प्रोग्राम को संदर्भित करता है जो जस्ट अदर पर्ल हैकर प्रिंट करता है, (अल्पविराम विहित है लेकिन कभी-कभी हटा दिया जाता है)। लघु 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                                  @@@@@@@
                        #@@@@@@@@@@@


यह भी देखें

संदर्भ

  1. Randal L. Schwartz in Usenet message M1HFPVH2JQ.FSF@HALFDOME.HOLDIT.COM explaining the origin of JAPH. Available through Google.com
  2. Plover.com
  3. Originally posted at perlmonks.org by user blokhead
  4. Originally posted at perlmonks.org by user liverpole.


अग्रिम पठन

  • Simon Cozens (2005). Advanced Perl Programming. O'Reilly. pp. 261–263. ISBN 9780596004569.


बाहरी संबंध