Gerade ein anderer Hacker von Perl

Gerade beziehen sich ein anderer Hacker von Perl oder JAPH, normalerweise auf ein Programm von Perl, das "Gerade einen anderen Hacker von Perl," druckt (ist das Komma kanonisch, aber wird gelegentlich weggelassen). Kurze JAPH Programme werden häufig als Unterschriften in Online-Foren, oder als T-Shirt-Designs verwendet. Der Ausdruck oder das Akronym werden auch gelegentlich (ohne Code) für eine Unterschrift verwendet.

JAPH Programme werden mit äußerst verfinsterten Methoden im Geist des Verfinsterten C-Streits klassisch getan. Mehr kürzlich, weil das Phänomen so weithin bekannt geworden ist, wird der Ausdruck manchmal in gewöhnlichen Beispielen (ohne Verfinsterung) verwendet.

Die Idee, winzige Programme von Perl zu verwenden, die eine Unterschrift als eine Unterschrift drucken, wurde von Randal L. Schwartz, in seinen Versetzungen zum newsgroup comp.lang.perl hervorgebracht. (Tatsächlich sind viele der JAPHs unten sein.)

Beispiele

JAPH Programm ohne Verfinsterung:

drucken Sie "Gerade einen anderen Hacker von Perl,";

</Quelle>

Das Einbetten von JAPH im undurchsichtigen Code:

$ _ = '987; s/^ (d +)/$ 1-1/e; 1 $? eval:print "Gerade ein anderer Hacker von Perl,"'; eval;

</Quelle>

Die Entzifferung von JAPH von einer umgestellten wörtlichen Schnur:

$ _ = "krJhruaesrltre c ein cnP, ohet"; $ _. = 1 $, 2 print$ während s / (..)(.)//;

</Quelle>

Das Ausdrucken von JAPH als getrennte Prozesse:

für den $i (0.. 4) {wenn (! Gabel) {\

$i == 0 oder nicht {$SIG {INTERNE NUMMER} = U-Boot {drucken "J"}} oder

$i == 1 oder nicht {$SIG {INTERNE NUMMER} = U-Boot {drucken "A"}} oder

$i == 2 oder nicht {$SIG {INTERNE NUMMER} = U-Boot {drucken "P"}} oder

$i == 3 oder nicht {$SIG {INTERNE NUMMER} = U-Boot {drucken "H"}};

Schlaf-$i; letzt;}} töten INTERNE NUMMER => $$;

</Quelle>

Das Erscheinen, als ob es etwas völlig ohne Beziehung zum Druck von JAPH tut:

$ _ = "wftedskaebjgdpjgidbsmnjgc";

tr/a-z/oh, Rollkragen-Ausdruck-Glas!/; Druck;

</Quelle>

Prozesse gabelnd, um einen Brief jeder in der richtigen Ordnung auszudrucken:

@P=split//,".URRUU\c8R"; @d=split//," \nrekcah xinU / lreP rehtona tsuJ"; U-Boot p {\

@p {"r$p", "u$p"} = (P, P); Pfeife "r$p", "u$p"; ++ $p; ($q * = 2) + = $f =! Gabel; Karte {$P=$P [$f^ord

($p {$ _}) &6]; $p {$ _} = / ^ $P/ix? $P:close$ _} keys%p} p; p; p; p; p; Karte {$p {$ _} = ~/^ [P].

/&&

close$ _} %p; warten Sie auf until$?; Karte {/^r/&&

</Quelle>

Das Verwenden von nur Schlüsselwörtern von Perl (keine Druckfehler oder Zeichensetzung):

nicht exp loggen srand xor s qq qx xor

s x x Länge uc ord und Druck chr

ord für qw q schließen sich an Gebrauch-U-Boot hat qx gebunden

xor eval xor drucken qq q q xor interne Nummer

eval lc q M weil und Druck chr ord

weil qw y abs ne open Hexe exp gebunden

hat

bezüglich der y M xor Skalar drucken srand qq

q q xor interne Nummer eval lc qq y sqrt weil

und drucken Sie chr ord für qw x printf

jede Rückkehr lokaler x y oder Druck qq

s s und eval q s undef oder Okt xor

Zeit xor bezüglich des Drucks chr interne Nummer ord lc

foreach qw y Hexe-Warnungschdir töten

exec geben y s gt zurück Sünde-Sorte hat gespalten

</Quelle>

Mit nur die Zeichensetzung, keine alphanumerischen Charaktere (geschrieben von Eric Roode; nur Arbeiten an Systemen von Unix und Unix-like):

`$ =`; $ _ = \%! ;($ _) =/(.)/; $ == ++ $-|;($. $/, $, $\\, $ ",$;,$^,$#,$~,$*,$:,@%) = (

$! = ~/(.)(.) (.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/, $ "), $ = ++; $. ++; $. ++;

$ _ ++; $ _ ++ ;($ _, $\\, $,) = ($ ~. $ ". "$; $ / $-% [$?] $ _ $\\$, $: $-% [$?]", $ "&$~,$#,); $, ++

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

</Quelle>

Ein viel kürzerer, mit nur die Zeichensetzung, die auf dem Modul von EyesDrops gestützt ist:

= ~ (' (? {'. ('-).) @_ * ([]!/) @-) ,@ (@@ +)'

^ '] [)]`} `] `.] % [`} % [@`@!#@% [') '."})')

</Quelle>

ASCII Kunst (um diese Arbeit zu machen, sicher zu sein, die Konsole-Größe auf mindestens 119x48 zu setzen):

#

U-Boot j (\$) {($\

P, $V) = _; während ($$P = ~ s:^\

([]): :x) {$V + = (' 1 ('eq$)?-32:31

} $V + = ord (substr ($$P, 0,1,""))-74} U-Boot ein {\

mein ($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

+int ($i*$F/$E)}-> {$I+int ($i*$G/$E)} =1}} U-Boot p {$D = {}; $\

Z= $z ||. 01; Karte {$H=$ _; $I=$N=j$H; $K=$O=j$H; während ($H) {$q=ord

substr ($H, 0,1,""); wenn (42 == $q) {$J=j$H; $L=j$H} sonst {$q-= 43; $L = $q

%9; $J =($q-$L)/9; $L=$q-9*$J-4; $J-= 4\$J += $I; $L += $K; ($I, $K, $J, $ L);

($I, $K) = ($J, $L)} ($I, $K, $N, $O)} _; my$T; Karte {$y=$ _; Karte {$T.= $D-> {$y }\

-> {$ _}? $\\:' '} (-59.. 59); $T. = "\n"} (-23.. 23); drucken Sie" \e [H$T"} $w = eval {\

verlangen Sie Win32:: Konsole:: 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 [PIQIOgUKU\k*JE+J+J5R5AI*EJ00'. 'BCB *'.

'DMKKJIR [Q +*EJ0*EK'; U-Boot h {$\\= qw (% & x) [interne Nummer rand

4]; Karte {printf "\e [$b; %dm", interne Nummer (rand 6) +101-60* ($w

|| 0); System ("cls") if$w ;($A, $S) = ($ _ [1], $\

_ [0]) ;($M,) = Spalt '}'; für ($z=256

; $z> 0; $z - = $S) {$S * = $A; p,} sleep$ _

[2]; während ($ _ [3] && ($ z += $ S)

Siehe auch

Weiterführende Literatur

Links


John Wycliffe / Joe Orton
Impressum & Datenschutz