#
# this is a long decon. the aim is to show how to deconstruct japhs in
+ general
#
#
# first we format it cleanly
#
for$a(27..35,9..12){
for$b(17..21,3..8){
for$c(11..30){
$d = abs($c-$a)+$b;
$e = $b^$a|$c;
push @a,$b+$c;
}
}
}
map{$_+=43}@a;
@w=map{chr}@a;
$x=[11,13,32,33,41,45,50,60,83,90,71,69,269];
$y=[244,231,240,468,454,463,806,744,789,246];
@z=map{$w[$_]}@$x,@$y,1948;
@c{@z}=(1)x$#z;
@z[0..keys%c]=sort keys%c;
$q=[[4,13,11,12],[0,7,8,12,3,2,10],[9,2,10,6],[3,0,1,5,2,10]];
map{
print map{lc@z[$_]}@$_;
print chr 0x20
}@$q;
#
# now look at that loop - half of that code doesn't do anything.
# clean it up and see that we're getting a big array of numbers
# into @a (2859 elements)
#
for $a(1..13){
for $b(27..31,13..18){
for $c(1..20){
push @a,$b+$c;
}
}
}
map{$_+=43}@a;
@w=map{chr}@a;
$x=[11,13,32,33,41,45,50,60,83,90,71,69,269];
$y=[244,231,240,468,454,463,806,744,789,246];
@z=map{$w[$_]}@$x,@$y,1948;
@c{@z}=(1)x$#z;
@z[0..keys%c]=sort keys%c;
$q=[[4,13,11,12],[0,7,8,12,3,2,10],[9,2,10,6],[3,0,1,5,2,10]];
map{
print map{lc@z[$_]}@$_;
print chr 0x20
}@$q;
#
# we now notice that the first map just adds 43 to each element in
# @a. we can do it earlier and dump the map. the next map just convert
+s
# the numbers in @a into characters in @w. since we see that @a isn't
# used again, we can skip this and populate @w in the loop.
#
for $a(1..13){
for $b(27..31,13..18){
for $c(1..20){
push @w,chr($b+$c+43);
}
}
}
$x=[11,13,32,33,41,45,50,60,83,90,71,69,269];
$y=[244,231,240,468,454,463,806,744,789,246];
@z=map{$w[$_]}@$x,@$y,1948;
@c{@z}=(1)x$#z;
@z[0..keys%c]=sort keys%c;
$q=[[4,13,11,12],[0,7,8,12,3,2,10],[9,2,10,6],[3,0,1,5,2,10]];
map{
print map{lc@z[$_]}@$_;
print chr 0x20
}@$q;
#
# next we see that the array refs $x and $y are only use once. let's
# cancel them down
#
for $a(1..13){
for $b(27..31,13..18){
for $c(1..20){
push @w,chr($b+$c+43);
}
}
}
@z=map{$w[$_]}(11,13,32,33,41,45,50,60,83,90,71,69,269,244,231,240,468
+,454,463,806,744,789,246,1948);
@c{@z}=(1)x$#z;
@z[0..keys%c]=sort keys%c;
$q=[[4,13,11,12],[0,7,8,12,3,2,10],[9,2,10,6],[3,0,1,5,2,10]];
map{
print map{lc@z[$_]}@$_;
print chr 0x20
}@$q;
#
# so @z just gets a slice from @w. so let's use slice syntax :)
# while we're at it, let's expand (1)x$#z since we know the value of $
+#z
# without @w really being used, we can just assign@z directly
#
@z = split//,'RTTUJNSJNUUSRLRHPUKAOCNE';
@c{@z}=(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
@z[0..keys%c]=sort keys%c;
$q=[[4,13,11,12],[0,7,8,12,3,2,10],[9,2,10,6],[3,0,1,5,2,10]];
map{
print map{lc@z[$_]}@$_;
print chr 0x20
}@$q;
#
# let's ignore the @c{@z} for a minute
# $q is just used as an array ref to confuse us. let's turn it into an
+ array
#
@z = split//,'RTTUJNSJNUUSRLRHPUKAOCNE';
@c{@z}=(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
@z[0..keys%c]=sort keys%c;
@q=([4,13,11,12],[0,7,8,12,3,2,10],[9,2,10,6],[3,0,1,5,2,10]);
map{
print map{lc@z[$_]}@$_;
print chr 0x20
}@q;
#
# that last map is just looping four times - let's expand it out
#
@z = split//,'RTTUJNSJNUUSRLRHPUKAOCNE';
@c{@z}=(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
@z[0..keys%c]=sort keys%c;
print map{lc@z[$_]}(4,13,11,12);
print chr 0x20;
print map{lc@z[$_]}(0,7,8,12,3,2,10);
print chr 0x20;
print map{lc@z[$_]}(9,2,10,6);
print chr 0x20;
print map{lc@z[$_]}(3,0,1,5,2,10);
print chr 0x20;
#
# but i recognise those remaining maps - they're just array slices!
# we can remove those 'lc' calls for reabablity too
# and of course, chr 0x20 is just ' '
#
@z = split//,'RTTUJNSJNUUSRLRHPUKAOCNE';
@c{@z}=(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
@z[0..keys%c]=sort keys%c;
print @z[4,13,11,12];
print ' ';
print @z[0,7,8,12,3,2,10];
print ' ';
print @z[9,2,10,6];
print ' ';
print @z[3,0,1,5,2,10];
print ' ';
#
# so for each word we print out a slice of @z. right
# what was that @c{@z} doing. well, it's assigning 1 to
# each hash elmement with a key in @z. keys%c is 14 so
# substitute that too
#
@z = split//,'RTTUJNSJNUUSRLRHPUKAOCNE';
for(@z){$c{$_}=1;}
@z[0..14]=sort keys%c;
print @z[4,13,11,12];
print ' ';
print @z[0,7,8,12,3,2,10];
print ' ';
print @z[9,2,10,6];
print ' ';
print @z[3,0,1,5,2,10];
print ' ';
#
# amlost there now...
# then the 15 sorted keys are shoved back into @z
# but there are only 14 keys. so one element of @z is killed
# since we now know the contents of @z, let's show that
#
@z = ('A','C','E','H','J','K','L','N','O','P','R','S','T','U','','H','
+P','U','K','A','O','C','N','E');
print @z[4,13,11,12];
print ' ';
print @z[0,7,8,12,3,2,10];
print ' ';
print @z[9,2,10,6];
print ' ';
print @z[3,0,1,5,2,10];
print ' ';
#
# well it's obvious now, right. let's finish up. removing @z
#
print "JUST";
print ' ';
print "ANOTHER";
print ' ';
print "PERL";
print ' ';
print "HACKER";
print ' ';
#
# and combining
#
print "JUST ANOTHER PERL HACKER";
|