SOLUTION:

You couldn't figure this one out?  Crazy.  Wait, you edited the file
and changed the formatting, right?  Bad tester, Bad!  Didn't you see
the comment instructing you not to edit the file?

So, why is the formating and spacing so important?  Because the output
string is encoded in the spaces of the actual program.  Well, more
exactly it is encoded into the number of characters between the spaces.
Hence the name of the program -- the output string is stenographically
hidden inside the structure of the code.

The first read of <DATA> is bogus, just to throw you off.  No, the
string in the data segment is ignored, so any changes made there have
no effect on the output.  We do read the string, but for no real reason
other than subterfuge.

It seeks to the start of the file by doing a SEEK_SET on DATA, which
as we are told somewhere, will allow us to read our own source code.
It then reads two lines and discards both of them. (These are the
"#!" and "local..." lines.  I could have seeked to an arbitrary
position in the file, but that might not be portable.

The p routine is the magic one that transforms a line of text
such as this one into the string:

	4 2 4 3 4 3 7

since "such" has four letters, "as" has two, "this" has four, etc.
We would then transform that string into lowercase letters:

	($_+ord('a')-1))}} }${_}=<DATA>;; $ {'_'}=<DATA>
        <----- 18 -------> <---- 14 ----> 1 <--- 12 --->
                r                n        a      l

there are several places in which the code could be cleaned up.  I could
do the "ord('a')+$_" transform in the s///gex, but it works as is and
changing any of the formatting requires most of the code to be rewritten
to fit the proper pattern of spaces.

Late note -- the line of code above no longer appears in the entry.
I've rewritten most of it to do things slightly differently.  Just use
that line as an example of the process.

Easier to read version is included as SOLUTION.pl.  The output
function has changed slightly to avoid the mess with s///gxe, since we
are faking the functionality of split on whitespace in the real code.
There are more comments in the solution program, too.

Tramm <hudson@swcp.com>
