The INTERCAL program works by storing the Baudot code for the string
in an array, converting it to ASCII, and printing it. There is some
Perl at the start and at the end, but they look like comments to an
INTERCAL compiler.

The Perl program stores the INTERCAL program in a string, parses it to
obtain the array contents, then does the same conversion to ASCII. For
readability, the following variables were used:

	$= Contains the current "shift" for the Baudot code
	$[ Used as the value 0 to initialize $=
	$, Contains the Baudot to ASCII conversion
	$; Contains the number 033 (one of the two Baudot "shift" codes)
	$_ Contains the number 037 (one of the two Baudot "shift" codes).
	   Also used to mask the lower 5 bits of the numbers.
	$~ Contains the INTERCAL program itself
	$* Contains the ASCII code of the current character (or, if the
	   current character is a "shift", the new value for $=)
	$# Contains the number 067 (used to mask the lower 6 bits of the
	   shift value)
	$1 Contains the ASCII representation of $-, from the regex which
	   matches INTERCAL assignments (the while condition)
	$- Contains the Baudot code of the current character ($1 & $_)
	$& Same as $*, from the match: $*=~m*.+* (which can be more clearly
	   rewritten as $* =~ /.+/). Just so that $&&127 (lower 7 bits of $&,
	   which is actually the same number as $& or $*) can confuse the
	   reader when the "&&" stands out.
	$. Counts the number of shifts in the string ($.++ just before
	   assigning to $=). Since there are 9 shifts, $.+1 is the code
	   for newline (OK, this might only work on UNIX; on other platforms
	   you'll get a linefeed but the important part is printed anyway).

In addition, subroutine "_" (created by *_=sub{printf $%c$,@_}) is used to
print one character. It could be more clearly written:

	sub _ { printf "%c", @_ }

It is used twice: to print each character of the string in _($&&127), and to
print the final newline in _($.+1)

