एक अन्य पर्ल हैकर: Difference between revisions

From Vigyanwiki
(Created page with "{{short description|Frivolous Perl program}} {{multiple issues| {{notablity|date=December 2021}} {{Self-published|date=April 2020}} }} जस्ट अदर पर्...")
 
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{short description|Frivolous Perl program}}
{{short description|Frivolous Perl program}}
{{multiple issues|
एक अन्य [[पर्ल]] या जेएपीएच, विशिष्ट रूप से एक पर्ल प्रोग्राम को संदर्भित करता है जो "एक अन्य पर्ल हैकर" प्रिंट करता है, (अल्पविराम कैनानिकल है किन्तु कभी-कभी हटा दिया जाता है)। शार्ट JAPH प्रोग्राम का उपयोग प्रायः ऑनलाइन [[इंटरनेट मंच|इंटरनेट फोरम]] पर सिग्नेचर के रूप में, या [[ टीशर्ट |टीशर्ट]] डिज़ाइन के रूप में किया जाता है। सिग्नेचर के लिए वाक्यांश या संक्षिप्त नाम का उपयोग (बिना कोड के) भी प्रायः किया जाता है।
  {{notablity|date=December 2021}}
  {{Self-published|date=April 2020}}
}}
जस्ट अदर [[पर्ल]] हैकर, या जेएपीएच, आम तौर पर एक पर्ल प्रोग्राम को संदर्भित करता है जो जस्ट अदर पर्ल हैकर प्रिंट करता है, (अल्पविराम विहित है लेकिन कभी-कभी हटा दिया जाता है)। लघु JAPH कार्यक्रमों का उपयोग अक्सर ऑनलाइन [[इंटरनेट मंच]] में हस्ताक्षर ब्लॉक के रूप में, या [[ टीशर्ट ]] डिज़ाइन के रूप में किया जाता है। हस्ताक्षर के लिए वाक्यांश या संक्षिप्त नाम का उपयोग कभी-कभी ([[कंप्यूटर प्रोग्रामिंग]] के बिना) भी किया जाता है।


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


छोटे पर्ल कार्यक्रमों का उपयोग करने का विचार जो एक हस्ताक्षर को ''हस्ताक्षर के रूप में'' प्रिंट करते हैं, रैंडल एल. श्वार्ट्ज द्वारा [[समाचार समूह]] comp.lang.perl पर अपनी पोस्टिंग में उत्पन्न हुआ था।<ref>Randal L. Schwartz in [[Usenet]] message M1HFPVH2JQ.FSF@HALFDOME.HOLDIT.COM explaining the origin of JAPH. Available through  [http://groups.google.com/group/comp.lang.perl.misc/msg/ecc405feeefc120c Google.com]</ref> उन्होंने कई जेएपीएच लिखे जो नीचे दिखाए गए हैं।
एक सिग्नेचर को सिग्नेचर के रूप में प्रिंट करने वाले शार्ट पर्ल प्रोग्राम का उपयोग करने का विचार रैंडल एल. श्वार्ट्ज द्वारा [[समाचार समूह|न्यूज़ग्रुप]] कॉम्प.लैंग.पर्ल के लिए अपनी पोस्टिंग में उत्पन्न हुआ था।<ref>Randal L. Schwartz in [[Usenet]] message M1HFPVH2JQ.FSF@HALFDOME.HOLDIT.COM explaining the origin of JAPH. Available through  [http://groups.google.com/group/comp.lang.perl.misc/msg/ecc405feeefc120c Google.com]</ref>उन्होंने अनेक  JAPH प्रोग्राम लिखे जो नीचे दर्शाए गए हैं।


==उदाहरण==
==उदाहरण==


जेएपीएच कार्यक्रम बिना किसी शंका के:
ऑब्फास्केशन के बिना JAPH प्रोग्राम:


<syntaxhighlight lang="perl">
<syntaxhighlight lang="perl">
print "Just another Perl hacker,";
print "Just another Perl hacker,";
</syntaxhighlight>
</syntaxhighlight>
अपारदर्शी कोड में JAPH एम्बेड करना:
ओपेक (अपारदर्शी) कोड में JAPH एम्बेड करना:


<syntaxhighlight lang="perl">
<syntaxhighlight lang="perl">
$_='987;s/^(\d+)/$1-1/e;$1?eval:print"Just another Perl hacker,"';eval;
$_='987;s/^(\d+)/$1-1/e;$1?eval:print"Just another Perl hacker,"';eval;
</syntaxhighlight>
</syntaxhighlight>
ट्रांसपोज़्ड स्ट्रिंग शाब्दिक से JAPH को डिकोड करना:
ट्रांसपोज़्ड स्ट्रिंग लिट्रल से JAPH को डिकोड करना:


<syntaxhighlight lang="perl">
<syntaxhighlight lang="perl">
Line 48: Line 44:
tr/a-z/oh, turtleneck Phrase Jar!/; print;
tr/a-z/oh, turtleneck Phrase Jar!/; print;
</syntaxhighlight>
</syntaxhighlight>
प्रत्येक अक्षर को सही क्रम में प्रिंट करने के लिए फोर्किंग प्रक्रियाएं:<ref>[http://perl.plover.com/obfuscated/ Plover.com]</ref>
प्रत्येक अक्षर को सही क्रम में प्रिंट करने के लिए फोर्किंग प्रोसेस:<ref>[http://perl.plover.com/obfuscated/ Plover.com]</ref>
<syntaxhighlight lang="perl">
<syntaxhighlight lang="perl">
@P=split//,".URRUU\c8R";@d=split//,"\nrekcah xinU / lreP rehtona tsuJ";sub p{
@P=split//,".URRUU\c8R";@d=split//,"\nrekcah xinU / lreP rehtona tsuJ";sub p{
Line 55: Line 51:
close$_}%p;wait until$?;map{/^r/&&<$_>}%p;$_=$d[$q];sleep rand(2)if/\S/;print
close$_}%p;wait until$?;map{/^r/&&<$_>}%p;$_=$d[$q];sleep rand(2)if/\S/;print
</syntaxhighlight>
</syntaxhighlight>
केवल पर्ल [[कीवर्ड (कंप्यूटर प्रोग्रामिंग)]] का उपयोग करना (कोई [[विराम चिह्न]] नहीं):<ref>Originally posted at [http://www.perlmonks.org/?node_id=290607 perlmonks.org] by user blokhead</ref>
केवल पर्ल [[कीवर्ड (कंप्यूटर प्रोग्रामिंग)]] का उपयोग करना (कोई [[विराम चिह्न]] नहीं):<ref>Originally posted at [http://www.perlmonks.org/?node_id=290607 perlmonks.org] by user blokhead</ref><syntaxhighlight lang="perl">
<सिंटैक्सहाइलाइट लैंग= पर्ल6 >
not exp log srand xor s qq qx xor
ऍक्स्प लॉग नहीं 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
और qw x printf के लिए chr ord प्रिंट करें
each return local x y or print qq
प्रत्येक स्थानीय xy या प्रिंट qq लौटाता है
s s and eval q s undef or oct xor
s s और eval q s undef या oct xor
time xor ref print chr int ord lc
समय एक्सओआर रेफरी प्रिंट सीएचआर इंट ऑर्ड एलसी
foreach qw y hex alarm chdir kill
फ़ोरैच qw y हेक्स अलार्म chdir किल
exec return y s gt sin sort split
कार्यकारी वापसी वाई एस जीटी पाप सॉर्ट विभाजन
</syntaxhighlight>केवल विराम चिह्नों का उपयोग करना, कोई अल्फ़ान्यूमेरिक वर्ण नहीं। यह पर्ल 5.30.0 के पश्चात ब्रेक हो जाता है क्योंकि $# और $* का उपयोग करने से फेटल एरर उत्पन्न होती हैं। यह JAPH [https://metacpan.org/author/ROODE एरिक रूड] द्वारा लिखा गया था और यह केवल [[यूनिक्स]] और यूनिक्स जैसी प्रणालियों पर कार्य करता है:<syntaxhighlight lang="perl">
</सिंटैक्सहाइलाइट>
`$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=(
 
$!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++;
केवल विराम चिह्न का उपयोग करना, कोई [[अक्षरांकीय]] वर्ण नहीं। यह पर्ल 5.30.0 के बाद टूट जाता है, क्योंकि $# और $* का उपयोग करने से घातक त्रुटियाँ पैदा होती हैं। यह JAPH [https://metacpan.org/author/ROODE एरिक रूड] द्वारा लिखा गया था और यह केवल [[यूनिक्स]] और यूनिक्स जैसी प्रणालियों पर काम करता है:
$_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++
 
;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=`
 
</syntaxhighlight>[https://metacpan.org/module/Acme::EyeDrops EyeDrops] मॉड्यूल के आधार पर, केवल विराम चिह्न का उपयोग करते हुए एक बहुत छोटा मॉड्यूल:<syntaxhighlight lang="perl">
सिंटैक्सहाइलाइट लैंग = पर्ल >
''=~('(?{'.('-)@.)@_*([]@!@/)(@)@-@),@(@@+@)'
`$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$ ,$;,$ ^,$#,$~,$*,$:,@%)=(
^'][)@]`}`]()`@.@]@%[`}%[@`@!#@%[').',"})')
$!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/ ,$ ),$=++;$.++;$.++;
</syntaxhighlight>ASCII आर्ट (इस ड्रोमेडरी-शेप्ड के कोड को कार्य करने के लिए कंसोल साइज  को कम से कम 119×48 पर सेट करने की आवश्यकता है):<ref>Originally posted at [http://www.perlmonks.org/?node_id=528042 perlmonks.org] by user liverpole.</ref>
$_++;$_++;($_,$\,$,)=($~.$ . $;$/$%[$?]$_$\$,$:$%[$? ] ,$ &$~,$#,);$,++
;$,++;$^|=$ ;`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$? ]$;$\$ $^$~$*.>&$=`
</सिंटैक्सहाइलाइट>
 
[https://metacpan.org/module/Acme::EyeDrops EyeDrops] मॉड्यूल के आधार पर, केवल विराम चिह्न का उपयोग करते हुए एक बहुत छोटा मॉड्यूल:
 
सिंटैक्सहाइलाइट लैंग = पर्ल >
=~('(?{'.('-)@.)@_*([]@!@/)(@)@-@),@@@+@)'
^'][)@]`}`]()`@.@]@%[`}%[@`@!#@%[').', })')
</सिंटैक्सहाइलाइट>
 
ASCII कला (इस [[ साँड़नी ]]-आकार के कोड को काम करने के लिए, कंसोल आकार को कम से कम 119×48 पर सेट करने की आवश्यकता है):<ref>Originally posted at [http://www.perlmonks.org/?node_id=528042 perlmonks.org] by user liverpole.</ref>
<syntaxhighlight lang="perl">
<syntaxhighlight lang="perl">
                                                       #
                                                       #
Line 141: Line 125:


==यह भी देखें==
==यह भी देखें==
* हैलो वर्ल्ड! कार्यक्रम
* हैलो वर्ल्ड! प्रोग्राम
*[[अस्पष्ट पर्ल प्रतियोगिता]]
*[[अस्पष्ट पर्ल प्रतियोगिता|ऑब्फास्केट पर्ल कॉन्टेस्ट]]
*पर्ल#पर्ल मनोरंजन
*पर्ल गोल्फ


==संदर्भ==
==संदर्भ==
Line 165: Line 149:
[[Category: Machine Translated Page]]
[[Category: Machine Translated Page]]
[[Category:Created On 08/08/2023]]
[[Category:Created On 08/08/2023]]
[[Category:Vigyan Ready]]

Latest revision as of 07:17, 28 September 2023

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

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

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

उदाहरण

ऑब्फास्केशन के बिना 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]

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

केवल विराम चिह्नों का उपयोग करना, कोई अल्फ़ान्यूमेरिक वर्ण नहीं। यह पर्ल 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.


बाहरी संबंध