And so the Inquisition demands to know the secrets behind the incantation
known as "p.pl"

So be it:

This program (p.pl) is based on a well-known algorithm to generate
permutations of a string in a non-recursive manner.  To simplify the
algorithm, it merely assigns each element of an array to an index of the
character position in the string.  It then uses two values to iterate
through the index array and permute the string based on indexing.  The
next total iteration of the permutation engine starts with the last
permutation given, and continues from there.  The engine works its way
through the last character, and at the point when all iterations are
complete, the index array constructs an exact reversal of the original.

Obfuscation is done in the following ways:
Rather than use simple while and for statements, the engine itself uses
comparisons and (EVIL) gotos.  This hides the exact nature of the loops.

All variable and label names are single-character, and spaces were removed
wherever they could be without making the statement ambiguous.  This
completely removes the hope of any readability by human eyes.

Some commands are replaced with simple wrapper subs with single-character
names to further reduce the readability of the main code.

There are more labels in the code than are actually goed-to.

That's about it for obfuscation.

I placed a tab after the labels just to make it look kinda neat, but no
special reason for it.

In the spirit of doing *something* proper in this code, I did ensure that
I declared all my variables using 'my' before using them, and included a
simple error check to make sure an argument was given.  The program even
returns an exit code of 1 if you forgot to give it something to permute.
The program will run without warning when run with -w.

No bounds checking is done, so you may permute as big a string as you can
pass to the program, but anything more than 8 characters long is going to
take a very long time.  The output "prettyness" also suffers if more than 
7 characters is given, unless your terminal has odd tab stops, which could
make it better or worse.
