Just another Perl hacker

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 11. Juli 2004 um 03:46 Uhr durch XTaran (Diskussion | Beiträge) (Übersetzung der englischen Seite). Sie kann sich erheblich von der aktuellen Version unterscheiden.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Ein Perl-Programm, das "Just another Perl hacker" ausgibt, wobei der Programmcode meistens so verunstaltet wurde, daß man diese Funktion dem Quellcode nicht sofort ansieht. Dazu werden, ganz im Sinne des International Obfuscated C Code Contests oft 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, daß das Programm aussieht, als würde es etwas ganz anderes und simples tun: unrelated to printing "Just another Perl hacker":

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

oder aber auch dadurch, daß 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

Der Ausdruck "Just another Perl hacker" wurde anfangs vorallem dadurch bekannt, daß Randal L. Schwartz bei Postings in die Newsgruppe comp.lang.perl (dem Vorgänger der heutigen Newsgruppe comp.lang.perl.misc) immer welche in seiner Signature hatte.


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