The program works by producing the following string and then eval()ing it:

$a=unpack("b*","TP6z
7(");$b="";$c=0;while($a=~s/^.//){$c=$&.$c;if(length($c)>7){$b.=$c;$c=0;}}print pack("b*",$b);

The second argument to the unpack is the string "The Perl Journal\n" in which
each character has been bit-reversed and truncated to 7 bits, so that every
8 characters are stored in 7 bytes. The "while" simply undoes this encoding
and puts the resulting bitstring in $b.

To produce this string, the script first produces the equivalent bit string
in $~, then uses pack("b*", $~). The bit string itself is encoded in the long
"number" which takes up most of the script: each digit represents the number
of "0" between "1"s in the binary representation; spaces are ignored. For
example the initial "2224" means 10010010010000; the exception is that "8"
is used instead of "1" to make the big ugly ASCII font stand out more.

The use of '$~=$===$-' instead of '$~=""' is simply to use some more space and
help filling the "underline" under the word "Journal" in the program listing.

