Fellow Monks,
Yesterday i toyed a little with an AnaJAPH device, an example of which is:

sub z{$_[13]^=' ';ucfirst("@_\n");}print z(map{(split//, 'alan eject porker thrush,' )[$_]}map{ord(uc($_)^'@')}split//, 'fuvid@clrsemjkgpaqwbhnotx' );

The AnaJAPH is a JAPH developed under the following constraints (additional to the basic JAPH guidelines):

(1) expressed in one print statement including (embedding):
(1.a) an anagram of "Just another Perl Hacker,"
(1.b) a topological (reshuffling) transform from anagram to "clear text"
(2) using only builtin vars and functions
(3) GOLF'd
(4) not OBFUscated (beyond (3)

As you can deduce from the example, i've not resolved constraint (1), as i have used a sub in addition to the print. Furthermore the transform (1.b) can conceivably be GOLF'd to a further extent. I welcome comments to achieve these goals.

As for JAPH 4-word anagrams there are countless; Examples may be generated by programs like Inge, Martin, Arrak, ... or of course your very own home rolled Perl generator.

As for AnaJAPH reshuffling, i've used the following snippet to generate the transform encoding. As always TMTOWTDI, and a generate function delivering more GOLF'd transforms would be interesting.
sub generate { my $AnaJAPH = uc($_[0]); my $JAPH = uc("Just another Perl hacker,"); print "$AnaJAPH\n"; my @Transform; for my $i (0..length($JAPH)-1) { my $k = index($AnaJAPH, substr($JAPH,$i,1)); $Transform[$i] = chr(64+$k); substr($AnaJAPH,$k,1) = '.'; } my $ret = lc("@Transform"); $ret =~ s/ //g; return $ret; }
Example:
print generate('Corpulent jerk heat rash,') . "\n";
will print:
CORPULENT JERK HEAT RASH,
jdvhiqgarofbnckleswu@mptx

for use in :
sub z{$_[13]^=' ';ucfirst("@_\n");}print z(map{(split//, 'corpulent jerk heat rash,' )[$_]}map{ord(uc($_)^'@')}split//, 'jdvhiqgarofbnckleswu@mptx');

Well, it may seem like a long way to walk for little reward (bordering on "much ado about nothing)..., but i had a leisure hour toying with Perl and i did learn something about the possibilities and limitations of the constructs used!

BTW, a search on PM discovers, that a fellow monk, the reverend delirium has already walked down a parallel path in node 318394: Anagram JAPH

A bow to you delirium, &&
Best regards,
sub z{$_[13]^=' ';ucfirst("@_\n");}print z(map{(split//, 'joker panel search truth' )[$_]}map{ord(uc($_)^'@')}split//, '@ulseghavqcdkfiojrwnpbmtx');