This is the solution to an entry for the 3rd Annual Obfuscated Perl Contest,
written by Adam Spiers       <adam.spiers@new.ox.ac.uk>
       and Chris Cladingboel <chris.cladingboel@wadham.ox.ac.uk>.


Firstly, please refer to the accompanying PROBLEMS file, which
contains a brief description of the whitespace encoding.

The program essentially does this (the order in the actual code
was swapped round to hinder clarity):

- uudecode $shift and store the first 11 numbers in @oh.
  
- Alias $5, $7 and $8 to `(.', `(..' and `(...' respectively.

- Open the script, read in the first line, and extract the
  word `perl'.  Store in $0 for later use.

- Alias $9 to `\u'.

- Split the non-uuencoded part of $shift on ! characters into
  @shift.

- Alias $= to $\, and set both it and $# to the empty string.

- Do various completely irrelevant stuff with $qq and $ee,
  in the hope that at least one person will think that their
  occurrences in the final substitution indicate foul play, and
  that at least one other person finds it mildly amusing.

- Set the __WARN__ and __DIE__ signal handlers to point to
  &marine.

- eval() some horribly broken code which generates several warnings/
  errors.  Each warning/error gets its nth word extracted (where
  n is the next offset shift()ed off @oh) and concatenated to
  $=, along with a corresponding bit of punctuation/code from
  @shift.

- Assign $= to $eval and perform a small substitution.

- Reset $= to the empty string (undefined).

- $eval now contains yet more horribly broken code fragments, this
  time delimited by `+'.  Split them up, and map eval() onto each
  one.

- Again, the error handler extracts certain words from each warning/
  error, although no punctuation/code is interpolated in between
  each word this time.

- Finally, do a horrendous substitution using some of the previous 
  aliases, which swaps a few of the letters around, includes
  `perl' from $0, and uppercases each word, to obtain `The Perl
  Journal'.  We learnt a lot about quoting through writing this
  substitution!

- Print out a number, which actually prints out `The Perl
  Journal' rather than the number.


Too easy?  Well it wasn't that easy to write!  I've left
decoding what the actual error messages were and why the broken
bits of code generated them to the reader, to ensure that noone
fully understands it all without putting *some* effort in :-)

P.S. The meaning behind the Y2K comment was simply that as soon
     as Perl's internal diagnostics change sufficiently (which
     will almost certainly happen before 2000), the program will
     break horribly.
