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

From Vigyanwiki
Revision as of 22:13, 13 August 2023 by alpha>LIPIKAKATIYAR

एक अन्य पर्ल या जेएपीएच, विशिष्ट रूप से एक पर्ल प्रोग्राम को संदर्भित करता है जो "एक अन्य पर्ल हैकर" प्रिंट करता है, (अल्पविराम विहित है लेकिन प्रायः विलोपित कर दिया जाता है)। लघु जेएपीएच प्रोग्राम का उपयोग प्रायः ऑनलाइन इंटरनेट फोरम पर सिग्नेचर के रूप में, या टीशर्ट डिज़ाइन के रूप में किया जाता है। सिग्नेचर के लिए वाक्यांश या संक्षिप्त नाम का उपयोग (बिना कोड के) भी प्रायः किया जाता है।

जेएपीएच प्रोग्राम ऑब्फास्केट सी कॉन्टेस्ट के विचार में, अत्यंत ऑब्फास्केट विधियों का उपयोग करके चिरसम्मतः किए जाते हैं। वर्तमान में जैसे ही यह परिघटना प्रसिद्ध हो गई, इस वाक्यांश का उपयोग प्रायः सामान्य उदाहरणों में किया जाता है (ऑब्फास्केशन के बिना)।

एक सिग्नेचर को सिग्नेचर के रूप में प्रिंट करने वाले लघु पर्ल प्रोग्राम का उपयोग करने का विचार रैंडल एल. श्वार्ट्ज द्वारा समाचार समूह कॉम्प.लैंग.पर्ल के लिए अपनी पोस्टिंग में उत्पन्न हुआ था।[1]उन्होंने कई जेएपीएच लिखे जो नीचे दर्शाए गए हैं।

उदाहरण

ऑब्फास्केशन के बिना JAPH प्रोग्राम:

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.


बाहरी संबंध