Just another Perl hacker: Difference between revisions

Content deleted Content added
m Spelling
m Reverted 1 edit by 2804:658C:210F:7200:F1D1:56C4:4316:9BE2 (talk) to last revision by Explicit
Tags: Twinkle New redirect Undo Mobile edit Mobile web edit Advanced mobile edit
 
(130 intermediate revisions by more than 100 users not shown)
Line 1:
#REDIRECT [[Perl#Community]]
'''Just another Perl hacker''', or '''JAPH''', typically refers to a [[Perl]] program which prints "Just another Perl hacker," (the comma is [[canonical]] but is occasionally omitted). Short JAPH programs are often used as [[signature block|signatures]] in online [[forum]]s. The phrase or acronym is also occasionally used (without [[code (computer programming)|code]]) for a signature.
 
{{Rcat shell|
JAPH programs are classically done using extremely [[obfuscated code|obfuscated]] methods, in the spirit of the [[The International Obfuscated C Code Contest|Obfuscated C Contest]]. More recently, as the phenomenon has become so well known, the phrase is sometimes used in ordinary examples (without obfuscation).
{{R to related topic}}
 
}}
The idea of using tiny Perl programs which print a signature ''as a signature'' was originated by [[Randal L. Schwartz]], in his postings to the [[newsgroup]] comp.lang.perl.
 
==Examples==
 
JAPH program without obfuscation:
 
print "Just another Perl hacker,\n";
 
Embedding JAPH in opaque code:
 
$_='987;s/^(d+)/$1-1/e;$1?eval:print"Just another Perl hacker,"';eval;
 
Decoding JAPH from an [[cryptography|encrypted]] [[string literal]]:
 
$_="krJhruaesrltre c a cnP,ohet";$_.=$1,print$2while s/(..)(.)//;
 
Appearing as if it does something completely unrelated to printing JAPH:
 
$_ = "wftedskaebjgdpjgidbsmnjgc";
tr/a-z/oh, turtleneck Phrase Jar!/; print;
 
Using only Perl [[Keyword (computer)|keywords]] (no [[literal]]s or [[punctuation]]):
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
 
Using only [[punctuation]] (no [[alphanumeric]] characters):
 
`$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=(
$!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++;
$_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++
;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=`
 
==Imitations==
 
A variant of this, practiced by programmers working on the [[Parrot virtual machine|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.
 
==Additional information==
===See also===
*[[Obfuscated Perl contest]]
 
===References===
{{FOLDOC}}
 
===External links===
*[http://www-106.ibm.com/developerworks/linux/library/l-japh.html Cultured Perl: The Elegance of JAPH]
 
[[Category:Perl]]
 
[[pl:Just another Perl hacker]]
[[de:Just another Perl hacker]]