#!/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{$:}; # 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' }