Just another Perl hacker

This is an old revision of this page, as edited by 172.216.65.139 (talk) at 19:25, 19 December 2005 (grammar). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Just another Perl hacker refers to a Perl program which prints "Just another Perl hacker," (the comma being canonical but occasionally omitted) using extremely obfuscated methods, typically ones based on obscure behaviours of sometimes rarely-used functions, in the spirit of the Obfuscated C Contest.


EEK, HACKER!

Examples

The obfuscation can result from the code being total gibberish, e.g.:

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

or from having "Just another Perl hacker," embedded in opaque code:

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

or from looking like it does something simple and completely unrelated to printing "Just another Perl hacker":

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

or maybe, one that uses only Perl keywords, with nothing else:

 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

This phrase was popularized by Randal L. Schwartz, who created most of the first such programs in the signatures of his postings to the Usenet newsgroup comp.lang.perl (the predecessor to the modern comp.lang.perl.misc). (In fact, the first and third of the JAPHs above are his.)

A variant of this, practiced by programmers working on the Parrot project, involves Parrot assembly programs printing the phrase "Just another Parrot hacker":

# OO obfuscated
   bounds 1
   trace 0
   newclass P0, "Just another Parrot Hacker\n"
   shift S0, P5
   does I0, P0, S0
   add I0, 4
   bsr I0
   pack S0, 381, I0, I0
   invoke
   ret

Often Parrot JAPHs are only lightly obfuscated; they're usually intended to demonstrate or test a feature in a non-trivial use.

See also

References

This article is based on material taken from the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.