Just another Perl hacker
Encyclopedia
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 signatures
in online forums
, or as T-shirt
designs. The phrase or acronym is also occasionally used (without code) for a signature.
JAPH programs are classically done using extremely obfuscated
methods, in the spirit of the Obfuscated C Contest. More recently, as the phenomenon has become so well known, the phrase is sometimes used in ordinary examples (without obfuscation).
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. (In fact, many of the JAPHs below are his.)
Embedding JAPH in opaque code:
Decoding JAPH from a transposed string literal
:
Printing out JAPH as separate processes:
Appearing as if it does something completely unrelated to printing JAPH:
Forking processes to print out one letter each in the correct order:
Using only Perl keywords
(no literals or punctuation
):
Using only punctuation
, no alphanumeric
characters (written by Eric Roode; only works on Unix
and Unix-like
systems):
A much shorter one, using only punctuation, based on the EyesDrops module:
ASCII art (to make this one work, be sure to set the console size to at least 119x48):
Perl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...
program which prints "Just another Perl hacker," (the comma is canonical
Canonical
Canonical is an adjective derived from canon. Canon comes from the greek word κανών kanon, "rule" or "measuring stick" , and is used in various meanings....
but is occasionally omitted). Short JAPH programs are often used as signatures
Signature block
A signature block is a block of text automatically appended at the bottom of an e-mail message, Usenet article, or forum post. This has the effect of "signing off" the message and in a reply message of indicating that no more response follows...
in online forums
Internet forum
An Internet forum, or message board, is an online discussion site where people can hold conversations in the form of posted messages. They differ from chat rooms in that messages are at least temporarily archived...
, or as T-shirt
T-shirt
A T-shirt is a style of shirt. A T-shirt is buttonless and collarless, with short sleeves and frequently a round neck line....
designs. The phrase or acronym is also occasionally used (without code) for a signature.
JAPH programs are classically done using extremely obfuscated
Obfuscated code
Obfuscated code is source or machine code that has been made difficult to understand for humans. Programmers may deliberately obfuscate code to conceal its purpose or its logic to prevent tampering, deter reverse engineering, or as a puzzle or recreational challenge for someone reading the source...
methods, in the spirit of the Obfuscated C Contest. More recently, as the phenomenon has become so well known, the phrase is sometimes used in ordinary examples (without obfuscation).
The idea of using tiny Perl programs which print a signature as a signature was originated by Randal L. Schwartz
Randal L. Schwartz
Randal L. Schwartz , also known as merlyn, is an American author, system administrator and programming consultant.-Career:...
, in his postings to the newsgroup
Newsgroup
A usenet newsgroup is a repository usually within the Usenet system, for messages posted from many users in different locations. The term may be confusing to some, because it is usually a discussion group. Newsgroups are technically distinct from, but functionally similar to, discussion forums on...
comp.lang.perl. (In fact, many of the JAPHs below are his.)
Examples
JAPH program without obfuscation:Embedding JAPH in opaque code:
Decoding JAPH from a transposed string literal
String literal
A string literal is the representation of a string value within the source code of a computer program. There are numerous alternate notations for specifying string literals, and the exact notation depends on the individual programming language in question...
:
Printing out JAPH as separate processes:
Appearing as if it does something completely unrelated to printing JAPH:
Forking processes to print out one letter each in the correct order:
Using only Perl keywords
Keyword (computer programming)
In computer programming, a keyword is a word or identifier that has a particular meaning to the programming language. The meaning of keywords — and, indeed, the meaning of the notion of keyword — differs widely from language to language....
(no literals or punctuation
Punctuation
Punctuation marks are symbols that indicate the structure and organization of written language, as well as intonation and pauses to be observed when reading aloud.In written English, punctuation is vital to disambiguate the meaning of sentences...
):
Using only punctuation
Punctuation
Punctuation marks are symbols that indicate the structure and organization of written language, as well as intonation and pauses to be observed when reading aloud.In written English, punctuation is vital to disambiguate the meaning of sentences...
, no alphanumeric
Alphanumeric
Alphanumeric is a combination of alphabetic and numeric characters, and is used to describe the collection of Latin letters and Arabic digits or a text constructed from this collection. There are either 36 or 62 alphanumeric characters. The alphanumeric character set consists of the numbers 0 to...
characters (written by Eric Roode; only works on Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
and Unix-like
Unix-like
A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification....
systems):
A much shorter one, using only punctuation, based on the EyesDrops module:
ASCII art (to make this one work, be sure to set the console size to at least 119x48):
External links
- Cultured Perl: The Elegance of JAPH
- Cpan.org, a collection of JAPHs at CPANCPANCPAN, the Comprehensive Perl Archive Network, is an archive of nearly 100,000 modules of software written in Perl, as well as documentation for it. It has a presence on the World Wide Web at and is mirrored worldwide at more than 200 locations...
.