Just another Perl hacker

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 7. November 2005 um 19:08 Uhr durch FabianLange (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Ein Perl-Programm, das "Just another Perl hacker" ausgibt, wobei der Programmcode meistens so verunstaltet wurde, dass man diese Funktion dem Quellcode nicht sofort ansieht. Dazu werden oft, ganz im Sinne des International Obfuscated C Code Contests, ansonsten selten verwendete Funktionen, Variablen oder Verhaltensweisen (wie das Aufrufen einer Funktion ohne Parameter oder das Verwenden von Sonderzeichen in Variabelnamen) genutzt.

Die Verschleierung der Funktion kann beispielsweise durch scheinbaren Datenmüll geschehen:

$_="krJhruaesrltre c a cnp,ohet";$_.=$1,print$2while s/(..)(.)//;

aber auch durch Einbinden von "Just another Perl hacker" in sehr undurchsichtigen Code:

$_='987;s/^(d+)/$1-1/e;$1?eval:print"Just another Perl hacker"';eval;

oder auch einfach nur dadurch, dass das Programm aussieht, als würde es etwas ganz anderes und simples tun, unabhängig von der Ausgabe des Satzes "Just another Perl hacker".

$_ = "wftedskaebjgdpjgidbsmnjgc";
tr/a-z/oh, turtleneck Phrase Jar!/; print;

oder aber auch dadurch, dass ausschließlich Perl-Schlüsselwörter verwendet werden:

 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

Die "Just another Perl hacker"-Programme wurden anfangs vor allem dadurch bekannt, dass Randal L. Schwartz bei Postings in die Newsgroup comp.lang.perl (dem Vorgänger der heutigen Newsgroup comp.lang.perl.misc) immer welche in seiner Signature hatte.


Der englischsprachige Artikel, auf dem dieser Artikel basiert, enthält beziehungsweise enthielt Material aus dem FOLDOC-Eintrag zu japh.