http://www.perlmonks.org?node_id=45627


in reply to lp.hpajnilap.palinjaph.pl

Very nice! The way you mirrored the text is very pleasing, and the substitution and its reflection are very clever.

I would like to stake my own claim to having the first symmetrical JAPH, though.

This code was actually written to demonstrate a little-known operator in Perl. Of course, you're familiar with the "spaceship operator", <=>, so named because it resembles Darth Vader's TIE Fighter in Star Wars. Well, this code uses the super spaceship operator, <<=>>.

1. < 0, push @ tnirp => <<=>> <= print @ hsup ,0 > .1 Just another Perl hacker rekcah lerP rehto +na tsuJ ; print @ tnirp ;
That was written in September 1999, and was inspired by something Benjamin Holzmann wrote for The Perl Conference 3.0. There is a more complicated version which doesn't print the reflection, but it's not as aesthetically pleasing, so I prefer this one.

An obscure bug in 5.6.0 forced me to rewrite my script for that version (the bug has been fixed for 5.6.1). Fortunately, the super spaceship operator still works.

.1 . m || <= 0, push @ tnirp => <<=>> <= print @ hsup ,0 => || m . + 1. Just another Perl hacker rekcah lreP rehto +na tsuJ ; print @ tnirp ;

Replies are listed 'Best First'.
How the Super Spaceship works
by japhy (Canon) on Dec 08, 2000 at 02:40 UTC
    For those that do not grok this delightful Perl obfuscation, I unveil the secret of <<=>>:
    print <<=>> 1; text print "done\n"; # is actually print << "BLANK_LINE" => > 1; text BLANK_LINE print "done\n"; # is actually print << "BLANK_LINE", > 1; text BLANK_LINE print "done\n";
    And the comma is superfluous.

    japhy -- Perl and Regex Hacker
Re: Re: lp.hpajnilap.palinjaph.pl
by jima (Vicar) on Dec 08, 2000 at 02:26 UTC
    I stand corrected! Nice examples, there.