Step 1. add whitespace
Step 2. change qq## to qq//
Step 3. change => operators to commas
Step 4. change commas to semicolons where applicable
Step 5. remove all of the extra 0's and 1's
#!/usr/bin/perl -w
use strict;
sub t {
# take the list of ordinal values passed
# and convert them to characters
map { chr($_) } @_
}
sub l {
# call the s subroutine passing @_
# split the output on spaces
# return only the first two values
return (split' ', &s)[0,1]
}
BEGIN { # remember this executes at compile time
$% = 2; # set the format page number to 2
$;[0] = 23; # Set the first three values of @;
$;[1] = $;[0]++; # to 24, 23, 3. Why no warnings?
$;[2] = 3; # Perl creates this when it creates $;
@; = &t(@;); # call t(24, 23, 3), store the results in @;
$^H ^= $% # $^H = 1794^2 = 1792; # disable strict 'refs'
}
$. = -${$;[1]}; # set the input line number to -$^W or -1
$! = $: =~ s/\s//g; # $: now contains '-'
$!++; # $! is now 3
$? = $= / $! / ($% + $!); # $? = 60 / 3 / (2 + 3) = 4
$= /= $!; # $= = 60 / 3 = 20
# Take the first 4 characters of the last value returned from
# splitting $^X on \ or /, i.e. substr((split/[\/\\],$^X)[-1],0,4);
$~ = substr((split/[\/\\]/, ${$;[0]} )[$.], $[, $?); # $~ = 'perl';
@~ = split//, $~; # @~ = qw(p e r l);
$^ = qq/h$~[${$;[1]}]$~[$!]$~[$|]/; # "h$~[1]$~[3]$~[0]" or 'help'
@~ = qx/$~$"$:$:$^/; # @~ will contain the output of `perl --help`
$=++ if (@~ == 30); # if there are 30 elements, we must make $= = 21
$~ = $~[$=]; # get the $=th element of @~, should be ' -u...'
$^ = substr($~, index($~, $:) + ${$;[1]}, ${$;[1]}); # substr($~, 2+1,
+ 1) or 'u'
$@ = ::j(); # $@ will contain an object
$b = '_';
*$b = sub { # *_
$~ = shift;
$~->($b, @_); # &$~($b,@_);
};
goto &{$@->$^};# goto is never called, $@->$^ is the same as u()
sub s {
# unpack the string returned by using 'u' as the template
unpack($^, $@->_)
};
sub j {
$a = {
_ => '92G5S="!!;F]T:&5R(%!E<FP@2&%C:V5R"@``',
}; # $a contains a ref to an anonymous hash with one key
$; = sub { # ref to an anonymous sub
$: = shift; # get $_[0] which should be '_'
$a->{$:}; # return the value in $$a{$:}
};
bless($;); # bless the code reference into the main package
$;; # return the blessed code reference
}
sub u {
# die using the output of &i
die(&i);
}
sub v {
# call the s subroutine passing @_
# split the output on spaces
# return the third and fourth values
(split' ', &s)[2,3]
}
sub i {
join' ', # join on spaces
(&l, # 'Just Another'
join('',&t(@{&e}) # 'Evil'
), &v, # 'Perl Hacker'
$/) # "\n"
}
sub e {
# return an anonymous array containing these values
[69,118,105,108]
};
sub p { # fluff
'Just'
}
sub r { # fluff
'Hacker'
}
sub o { # fluff
'Another'
}