# The variables used in the original program have been
# changed for readability, and to protect their identity.
# Any resemblence to OTHER variables of the same name is
# C<use strict>ly cooincidental.

*A	= \2;		# sets $A = 2 (and a semi-constant, too)

$#B	= ($A * $A);# makes scalar @B return 5

%C	= (		# makes a hash (that's tricky)
			# the hash is made up of keys from 1..16 (for the
			# sort { $a <=> $b } keys(%C) trick) and the values
			# which are the ord() values of the characters in
			# the phrase "The Perl Journal".  these are all
			# mathematical expressions.  I've add parens and
			# spacing, to make it a WEE bit more readable.

	$A/$A,			($A * $A * @B * @B) - ($A ** ($A * $A)),
	$A,				($A * $A * @B * @B) + ($A * $A),
	@B - $A,			($A * $A * @B * @B) + ($A/$A),
	$A * $A,			$A ** @B,
	$A * $A + ($A/$A),	$A ** ($A * $A) * @B,
	$A * (@B - $A),		($A * $A * @B * @B) + ($A/$A),
	$A + @B,			$A * ($A * @B * @B + (@B + $A)),
	$A ** (@B - $A),		$A * $A * @B * @B + ($A ** (@B - $A)),
	(@B - $A) ** $A,		$A ** @B,
	$A * @B,			$A ** ($A * (@B - $A)) + ($A * @B),
	$A * @B + ($A/$A),	$A * $A * @B * @B + (@B * $A) + ($A/$A),
	$A * @B + $A,		$A ** ($A + @B) - ((@B - $A) ** $A) - $A,
	$A * @B + (@B - $A),	$A * ($A * @B * @B + (@B + $A)),
	$A * ($A + @B),		$A * $A * @B * @B + ($A * @B),
	@B * (@B - $A),		$A * $A * @B * @B - (@B - $A),
	$A ** ($A * $A),		$A * $A * @B * @B + ($A ** (@B - $A))
);

# This next section is shameful promotion of TPJ :)

# Just a Here-Doc
# 'go//s\/s' is the reverse of s/\s//og, btw
# I removed the spaces so as to make it a little
# more coherent.  Just look at it backwards.  Or
# upside-down... I don't know which.

$_=<<'go//s\/s';
;)C%(syek}b$>=<a${tros}}_${C$rhc{pam+tnirp
go//s\/s

# thus endeth the Here-Doc


# This next section is shameful promotion of my initials :)

# Just a Here-Doc
# 'Jeff Pinyan' is the reverse of the reverse of my name
# Again, I've removed spaces to make it a little more
# readable...

$code=<<'Jeff Pinyan';
eval(scalar(reverse[s/\s//og,$_]->[1]));
Jeff Pinyan


# Finally, evaluate $code
# This little "hack" does a s/// on $code, and then
# returns $code to eval() via an anon. array.  I got
# the idea from EPP, the [$a=>$b]->[$b<=$a] trick...

eval [$code=~s/\s//og,$code]->[1];

# That code reverses the $_ variable char for char,
# s/\s//og's it, and then evals $_.  Same deal as above.

# This will still run, too.  I changed all the %* to %C.