<font color="#000000>sub r {
# get the first value of the array sent to me
$z = shift @_;
# create an 8 element, little endian bit array (@b)
# containing the binary bits of $z
foreach $_ (0 .. 7) {
$b[$_] = vec($z, $_, 1);
}
# create a scalar $v containing the first bit
my $v .= $b[0];
foreach $_ (1, 3, 5) {
# append the (3rd & 2nd),(5th & 4th) and (7th & 6th) bits
$v .= $b[$_ + 1] . $b[$_];
}
# append the 8th bit
$v .= $b[7];
# $v now contains $b[0].$b[2].$b[1].$b[4].$b[3].$b[6].$b[5].$b[7]
# return a bit vector of $v
return pack('b*', $v);
}
sub e {
# eval the first item passed
eval $_[0];
# return the value in $"
$";
}
sub t {
# split $_[0] into an array and send it through subroutine r and joi
+n the returned value
join '', map(r($_), split(//, $_[0], 0));
}
# redefine the input record separator ($/)
$/ = qq(mkd\@h lqvj}" |[mhrqj\@ WW RB ?=H\n ;]B y[I LO
+] opq rc\@ PB yS MLQ\n
}By SS] hlq vj\@ twq vP GG Rsa\n hPw lbPB|=B?;Q ^B
+y_B|=B ?;\\eplP ByQ\nRH VVB
E|Q QVD :lD ]m rc \n ch\@I ]{{ );
$n = "4 km j\@ !vw\n\njpcl\@(clr\@0aeucl";
# acting on $n, replace " with a space and delete newlines and spaces
$n =~ tr/"\n / /d;
# $n now contains: 4kmj@!vwjpcl@(clr@0aeucl
# redefine the list separator ($")
# send $n to the t subroutine and store the returned value in $"
$" = t($n);
# $" now contains: Just Another Perl Hacker
$| = 1;
# acting on $/, replace " with a space and delete newlines and spaces
$/ =~ tr/"\n / /d;
# $/ now contains: mkd@hlqvj} |[mhrqj@WWRB?=H;]By[ILO]opqrc@PBySMLQ}By
+SS]hlqvj@twqvPGGRsahPwlbPB|=B?;Q^By_B|=B?;\eplPByQRHVVBE|QQVD:lD]mrcc
+h@I]{{
$_ = t($/);
# $_ now contains the code listed after __END__
# eval $_ which creates a new print subroutine
e($_);
# run the new print subroutine passing: Just Another Perl Hacker
&print($");
__END__
# with comments and extra white space added by me :)
sub print {
@z = split //,$_[0]; # split $_[0] into an array containing the char
+acters
$y = 127;
while ($y - 32) { # for ($y = 95, $y > 0, $y--)
$y--;
print join('', map(
ord($z[$_]) > $y ? $z[$_] : chr($y) # ascii value of $z[$_] > $y?
+if yes, then return $z[$_]; else return chr($y)
, 0..$#z # for ($_ = 0, $_ <= $#z, $_++) {
))."\r";
sleep 1;
}
}
|