<?xml version="1.0" encoding="UTF-8"?>



<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule">

    <channel>
        <title>obfuscated</title>
        <link>http://prlmnks.org/list/</link>
        <description>RSS feeds from perlmonks.org</description>
        <language>en</language>
        <ttl>5</ttl>

        

<item>
    <title>Weird number generator (jimt)</title>
    <link>http://prlmnks.org/html/580083.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/580083.html</guid>

    <description>
        &lt;p&gt;So, I was off hunting for another obfuscation/golfing challenge for myself and was thinking about writing up an [wp://Abundant_number|abundant number] generator (I&#39;d discovered an old app I&#39;d done as a wee college student in pascal for my CS 112 class), but considered it too simple a task. A little digging around yielded [wp://Weird_Number|weird numbers], which are, of course, [wp://Abundant_number|abundant numbers] which are not [wp://Semiperfect_number|semi-perfect].&lt;/p&gt;&lt;p&gt;So now I give you, in only 176 characters, a weird number generator.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;{$s=eval join&#39;+&#39;,@d=grep!($n%$_),1..++$n-1;eval{w(@d,$n)if$s&gt;$n};print$n,$/if$@=~/!/;redo}sub w{my$s=pop||die;my$t=pop||die&#39;!&#39;;eval{w(@_,$s-$t)},$@=~/!/||die if$t&lt;=$s;w(@_,$s)}&lt;/pre&gt;&lt;p&gt;Note that with only small modifications, this script can also easily print out [wp://Deficient_number|deficient numbers], [wp://Abundant_number|abundant numbers], [wp://Perfect_number|perfect numbers], [wp://Semiperfect_number|semi-perfect numbers], [wp://Multiply_perfect_number|multiply perfect numbers], and who knows how many other variations on the theme. A more interested party may try stepping in to upgrade this program to print out this information (6 P, 10 D, 12 A, 20 S, 70 W, 120 3P, and so on) for all numbers it encounters.&lt;/p&gt;&lt;spoiler&gt;&lt;p&gt;The logic in this one is really tight, but I&#39;m not too happy with the argument passing into the w() function. As always, in deciphering an obfuscation, our first step is to re-format into something more legible.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;{  $s=eval join&#39;+&#39;, @d = grep !($n%$_), 1..++$n-1;  eval { w(@d, $n) if $s &gt; $n};  print $n,$/ if $@ =~ /!/;  redo}sub w{  my $s = pop || die;  my $t = pop || die &#39;!&#39;;  eval { w( @_, $s-$t) },  $@ =~ /!/ || die  if $t &lt;= $s;  w( @_, $s)}&lt;/pre&gt;&lt;p&gt;And now we&#39;ll attack in parts. First, the while loop. This is extremely easy and just about self-evident.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;{  $s=eval join&#39;+&#39;, @d = grep !($n%$_), 1..++$n-1;  eval { w(@d, $n) if $s &gt; $n};  print $n,$/ if $@ =~ /!/;  redo}&lt;/pre&gt;&lt;p&gt;The number we&#39;re checking for weird-ness is $n. So just start off an infinite loop counting up. Note that we actually increment $n inside of the foreach loop.Start off by setting up two variables for this $n, $s (contains the sum of all of its divisors) and @d (which contains the list of all divisors). We build @d by grepping out all the divisors, then link &#39;em together with pluses and eval it to get the sum.&lt;/p&gt;&lt;p&gt;Now, we iterate in a for loop all digits between 1 and $n - 1. If that number evenly divides $n, then we add it onto the sum, and push it onto our list of divisors. The grep statement there ensures that we&#39;re only looking at proper divisors. Also note that I just arbitrarily chose to demontrate that the number is abundant by summing all proper divisors of the number and seeing if it&#39;s equal to the number itself, instead of determining that it&#39;s 2-perfect by summing all divisors including the number itself and seeing if it&#39;s equal to 2 *  $n. They&#39;re equivalent definitions.&lt;/p&gt;&lt;p&gt;The next eval statement checks a number for semi-perfectness. We&#39;ll come back to this. But note that we only perform the check if $s &gt; $n, that is if the sum of all divisors is greater than the number itself, which means that the number is abundant. It can&#39;t be weird if it isn&#39;t also abundant, and its critical to only perform the check for semi-perfectness if the number is abundant. If you end up checking all numbers, execution speed plummets. For comparison, on my machine, I could spit out the first 32 weird numbers in a minute by only checking the abundants for semi-perfectness. If I checked all numbers for semi-perfectness, I could only do the first 5 weird numbers in a minute.&lt;/p&gt;&lt;p&gt;And finally, just print out the number $n (followed by a newline, conveniently stored in the input record separator, $/) if w() did fail. w() fails if the number is not semi-perfect, and hence in this case it is weird.&lt;/p&gt;&lt;p&gt;Now, the tight logic is in the w() function itself. I think this thing is neat.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;sub w{  my $s = pop || die;  my $t = pop || die &#39;!&#39;;  eval { w( @_, $s-$t) },  $@ =~ /!/ || die  if $t &lt;= $s;  w( @_, $s)}&lt;/pre&gt;&lt;p&gt;Call as eval { w( @divisors, $sum) } &lt;/p&gt;&lt;p&gt;As I said, I&#39;m not happy with the argument passing, but it&#39;s there as an extreme optimization. Re-ordering the arguments and just copying off the array ( my ($s, $t, @e) = @_;) causes performance to fall through the floor. So I take the 4 character hit in exchange for the ability to complete in real time. Even twiddling the script to pass in $s and $t as the first arguments and shifting them off grants a noticable performance hit.&lt;/p&gt;&lt;p&gt;Okay, this function will determine if for a given set of natural numbers, is there a subset of those numbers that add up to the given sum. I had originally approached this method completely differently, by trying to come up with all of the possible subsets for the given set, and then checking each of those to see if any of them added up to the sum. This worked, but was very expensive, and potentially wasteful. A function to build subsets by using binary counting is cheap, but character heavy.&lt;/p&gt;&lt;p&gt;So we go this way. First thing we do is pop off the sum we&#39;ve been passed in and the number we&#39;re testing. If there&#39;s no sum, then we already recursed down to it, so we succeed - there is a semi perfect subset, so die quietly to fly out of the recursion and be done. If there is no number to test, then die with a bang (&#39;!&#39;) - we&#39;ve run out of numbers, so this sequence does not yield a semi-perfect result. If we have a number to test, we continue.&lt;/p&gt;&lt;p&gt;Next steps. If we&#39;re here, then we have a number to test, and we haven&#39;t reached the sum yet. If the number we&#39;re testing is less than our sum ($t &lt; $s), then it&#39;s &lt;i&gt;possible&lt;/i&gt; that the number is part of a semi-perfect subset. So in that case, we&#39;re going to recurse into our function, subtracting the test number from our sum. And we repeat.&lt;/p&gt;&lt;p&gt;Now, when we&#39;re done with that eval, if we died with a bang, then we want to keep checking - all we know is that that subset failed. However, if we died without a bang, then we found a successful subset, so we bubble up another die to jump out of our recursion with our &quot;success&quot; message. That is, if we died with a bang, we&#39;ve got to keep checking, so we discard that test digit from out set and re-enter the function with the rest of the numbers in the set + our original sum. At this point, we&#39;ve determined that that test digit cannot be in any subset that adds up to our sum. However, if we did NOT die with a bang, then we succeeded, so just bubble up the bangless die to jump out.&lt;/p&gt;&lt;p&gt;If we fall down to the last statement ( w(@_, $s) ), that means that our test number ($t) was greater than the sum we were checking, so we just throw it away (it was already popped off) and recurse back in w/o it. Once inside, we&#39;ll either end up succeeding or dying anyway.&lt;/p&gt;&lt;p&gt;12 is abundant (but not weird), so here&#39;s a sample runthrough of the function.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;w(1,2,3,4,6, 12);w(1,2,3,4, 6);w(1,2,3, 2);w(1,2, 2);die (2 == 2), therefore 12 is semiperfect&lt;/pre&gt;&lt;p&gt;Here&#39;s a runthrough of Limbic~Region&#39;s example set + sum below (1, 7, 11, 14, 18,  21), to give a more complex example:&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;w(1,7,11,14,18, 21)w(1,7,11,14, 3)#21 - 18 becomes new product, toss onto the end# 14 &gt; 3, ignore it, continuew(1,7,11, 3)# 11 &gt; 3, ignore it, continuew(1,7, 3)# 7 &gt; 3, ignore it, continuew(1, 3)# 1 &lt;= 3, subtract from 3, continuew(2)#pop off our sum (2), and our test digit. Oops!#No test digit, die with a bang, we failed.#hops all the way back up to here, throws away 18, and continues.#it has determined there is no subset that contains 18 and adds to 21.w(1,7,11,14, 21)w(1,7,11, 7)#21 - 14 becomes new product, toss onto the end# 11 &gt; 7, ignore it, continuew(1,7, 7)# 7 &lt;= 7, subtract it from 7, continuew(1, 0) #pops off the sum, which is 0 in this case, so we&#39;ve succeeded. &quot;die&quot; with no bang -&gt; success!&lt;/pre&gt;&lt;/spoiler&gt;&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; Shaved off a character.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update 2:&lt;/b&gt; Shaved off 10 more characters.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update 3:&lt;/b&gt; Shaved off another 13 characters. Obviously, this wasn&#39;t as golfed as I&#39;d originally thought. Wow.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update 4:&lt;/b&gt; Added in another example, explaining Limbic~Region&#39;s example set below&lt;/p&gt;
    </description>
</item>

        

<item>
    <title>JABWT (ailivac)</title>
    <link>http://prlmnks.org/html/579897.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/579897.html</guid>

    <description>
        &lt;p&gt;I assume this has been done before, but since the Burrows-Wheeler transform seemed like such a cool way to obfuscate text, I decided to write my own japh with it.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;my$l=&#39;}(yr=etd4d)c305123826312366135714622,,,,,,,,,,,811=1,1,-(,--,,,,17-,81111-08,6-0-7,-,-,,--)0dc+t(y$$(@@@liswchhri;&gt;!&lt;i{hp=nf;mm))&#39;;$l =~ s/&gt;!&lt;/\0/;my@i=split//,$l;my@t=sort@i;for(1..@i-1){my($i,$j)=0;for$j(@t){$j=$i[$i++].$j;}@t=sort@t;}my($a)=@t;$a=~s/\0//;eval$a;&lt;/pre&gt;&lt;p&gt;This just takes a string that has been encoded with the BWT, decodes it, and passes it to eval. The string itself is a minimally obfucated perl program to display a string encoded as a list of numbers&lt;/p&gt;&lt;p&gt;Here is the short program I wrote to compute the BWT&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;my$in=&quot;$ARGV[0]\0&quot;;sub n{substr($_[0],1).substr($_[0],0,1)}my($r, @r)=(n($in),$in);while(${r}ne$r[0]){push@r,$r;$r = n($r);}@r=sort@r;my$l=join&#39;&#39;,map{substr($_,-1,1)}@r;&lt;/pre&gt;&lt;p&gt;The null character is used as an end of line indicator, just so the sorting is easier. In the first program, the null is replaced with &quot;&amp;gt;!&amp;lt;&quot; for storage.&lt;/p&gt;
    </description>
</item>

        

<item>
    <title>integer partition golf (jimt)</title>
    <link>http://prlmnks.org/html/579156.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/579156.html</guid>

    <description>
        &lt;p&gt;Yes, yes, this has [id://78334|been done before] (hasn&#39;t everything?), but I think this still comes out to be the most compact method to actually calculate and display partitions of integers. The previous thread had people just trying to calculate them in memory. This one takes a single integer on the command line and goes to town.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;sub p{my($n,@e,$o)=@_;print if!$_{$_=join$&quot;,sort@_,$/}++;p(++$o,--$n,@e)while$n-1}p(shift)&lt;/pre&gt;&lt;p&gt;90 characters! woo hoo! I only beat [id://78389|tilly&#39;s solution] by 1 character, once I appended &lt;b&gt;print@$_,$/for P(shift)&lt;/b&gt; to it. A more compact printer added on to it would render that one the winner.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; Ya know, one of these days, my golf game&#39;ll be good enough that I&#39;ll post and someone won&#39;t immediately respond and say &quot;I can shave off another character!&quot; heh. Props to liverpole and blazar. I incorporated their suggestions, plus another one I thought of to drop down to 83.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;sub p{my($n,@e,$o)=@_;$_{$_=join$&quot;,sort@_,$/}++||print;p(++$o,$n,@e)while--$n}p pop&lt;/pre&gt;&lt;p&gt;&lt;b&gt;Update 2:&lt;/b&gt; And 80&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;sub p{my(@e,$o)=@_;$_{$_=join$&quot;,sort@_,$/}++||print;p(++$o,@e)while--$e[0]}p pop&lt;/pre&gt;&lt;spoiler&gt;&lt;p&gt;I&#39;m pretty proud of this one. I think my golf game is improving. As always, let&#39;s reformat for clarity.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;sub p{my($n,@e,$o) = @_;print if ! $_{$_ = join$&quot;,sort@_,$/}++;p(++$o, --$n, @e) while $n-1;}p(shift)&lt;/pre&gt;&lt;p&gt;This one&#39;s so tight it&#39;s gonna be a real bitch to explain. it&#39;s a recursive function, and each sub-call hands in one less than the number it previously had, in addition to a counter counting up to where it previously was, plus any other arguments it had received. I&#39;ll walk this through in a bit.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;my($n,@e,$o) = @_;#note this is the same as:my $n = $_[0];my @e = @_;my $o;&lt;/pre&gt;&lt;pre class=&quot;block_code&quot;&gt;print if ! $_{$_ = join$&quot;,sort@_,$/}++;&lt;/pre&gt;&lt;p&gt;This is the bulk of the magic. Internally, it pulls in and sorts the arguments it was handed. So, for example, if we&#39;re partitioning 15, on one call this function would receive (11,2,1,1) (in some order). So here we sort it (1,1,2,11) along with $/ (input record terminator, defaults to &quot;\n&quot;, invaluable for obfuscations). This has the unfortuate side effect of printing the newline first, then the output, but que sera sera.&lt;/p&gt;&lt;p&gt;It&#39;s sorted so that we can subsequently return with the same arguments in a different order but not reprint. It assigns that sorted business to $_, and uses the whole ball of wax as a hash key which it post-increments.&lt;/p&gt;&lt;p&gt;We then call print w/o arguments (defaults to $_, which we just assigned back in that hash key), only if the value of the key in the hash == 0. That is, only the first time that string is encountered. This prevents duplicates.&lt;/p&gt;&lt;p&gt;We then recurse. We hand off an arbitrary counter that constantly goes up, our original number, decremented, and anything else we were originally handed in. Repeat as long as the number exists.&lt;/p&gt;&lt;p&gt;Sample runthrough: (unless I inserted a logic error)&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;p(5)  outputs 5  calls p(1,4)    outputs 1,4  calls p(2,3)    outputs 2,3    calls(1,1,3)    outputs 1,1,3  calls p(3,2)    calls(2,2,1)      outputs 1,2,2      calls(1,1,2,1)        outputs 1,1,1,2  calls p(4,1)    calls p(3,2,1)      calls p(2,2,1)        calls p(1,1,2,1)      calls p(2,1,1,1)        calls p(1,1,1,1,1)          outputs 1,1,1,1,1&lt;/pre&gt;   &lt;/spoiler&gt;
    </description>
</item>

        

<item>
    <title>Faster japh (ambrus)</title>
    <link>http://prlmnks.org/html/578892.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/578892.html</guid>

    <description>
        &lt;pre class=&quot;block_code&quot;&gt;use warnings; use strict; @,=unpack&quot;C*&quot;,&quot;mG\e:*\cZM\b?~O\xf&quot;.&quot;*qGH_t2#OS/HU\ckE\34.OM\b&quot;;for$,(0..4){1&lt;&lt;$,&amp;$_,or$,[uc]+=$,[2**$,+abs]-=64*($,[lc]*=2),for+0..31}print+chr($_%127)for@,,&lt;/pre&gt;&lt;p&gt;This is a nicer variant of [id://577876] using a simple idea from [id://309529].
    </description>
</item>

        

<item>
    <title>Polynomial JAPH (tweetiepooh)</title>
    <link>http://prlmnks.org/html/577605.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/577605.html</guid>

    <description>
        Not sure if this belongs here but I can&#39;t hide the code and give credit to the original source.&lt;p&gt;When I worked for a company writing education software many moons ago on the BBC micro we had a product that would work out the polynonial function for a sequence of number.  We actually used this in some crude protection schemes.&lt;p&gt;Excel offers a smaller version of this in trending so I thought I could use the principle to generate a JAPH.  Limitations in Excel mean accuracy is limited to 6 characters at a time.&lt;p&gt;I dare say those with a more maths bent can get this even better.&lt;p&gt;&lt;pre class=&quot;block_code&quot;&gt;#!/usr/local/bin/perl -wuse strict;map{ eval}(&#39;map{printf &quot;%c&quot; ,3.55*$_**5-57.583*$_**4+347.75*$_**3-972.92*$_**2+1249.2*$_-463.5}(1..6)&#39;,&#39;map{printf &quot;%c&quot;, -0.55*$_**5+10.208*$_**4-69.833*$_**3+215.29*$_**2-292.12*$_+247.5}(1..6)&#39;,&#39;map{printf &quot;%c&quot;, 1.25*$_**5-25.333*$_**4+191.25*$_**3-672.17*$_**2+1099*$_-561.5}(1..6)&#39;,&#39;map{printf &quot;%c&quot;, 0.5833*$_**5-9.4583*$_**4+56.167*$_**3-148.54*$_**2+169.25*$_+36.5}(1..6)&#39;);print &quot;\n&quot;&lt;/pre&gt;Note I&#39;m not a mathematician so if this is named wrongly and someone else already has this then I appologise.&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;&lt;p&gt;With some playing I have this down to &lt;pre class=&quot;block_code&quot;&gt;for(&#39;3.55*$i**5-57.583*$i**4+347.75*$i**3-972.92*$i**2+1249.2*$i-463.5&#39;,&#39;-0.55*$i**5+10.208*$i**4-69.833*$i**3+215.29*$i**2-292.12*$i+247.5&#39;,&#39;1.25*$i**5-25.333*$i**4+191.25*$i**3-672.17*$i**2+1099*$i-561.5&#39;,&#39;0.5833*$i**5-9.4583*$i**4+56.167*$i**3-148.54*$i**2+169.25*$i+36.5&#39;){{for$i(1..6){printf&quot;%c&quot;,eval$_}}};&lt;/pre&gt;&lt;b&gt;Update 2&lt;/b&gt;This is now at 306 chars.&lt;pre class=&quot;block_code&quot;&gt;map{$i=$_%6+1;print chr${[3.55*$i**5-57.583*$i**4+347.75*$i**3-972.92*$i**2+1249.2*$i-463.5,-0.55*$i**5+10.208*$i**4-69.833*$i**3+215.29*$i**2-292.12*$i+247.5,1.25*$i**5-25.333*$i**4+191.25*$i**3-672.17*$i**2+1099*$i-561.5,0.5833*$i**5-9.4583*$i**4+56.167*$i**3-148.54*$i**2+169.25*$i+36.5]}[$_/6]}(0..23)&lt;/pre&gt;
    </description>
</item>

        

<item>
    <title>s/Perl hacker,/plagiarized node\n/; (Hue-Bond)</title>
    <link>http://prlmnks.org/html/577046.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/577046.html</guid>

    <description>
        &lt;p&gt;Since this is a hot topic, I decided to make a slightly different JAPH^HN ;^).&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;$~=@$b/2;for($;=$|++;(($:,$a)=($$b[$;],$$b[$;+$~]))&amp;&amp;$a=~/^\d+$/||($\=$/,print(&quot;@$b[$~*2...3+$~*2]&quot;),-0);$;++){BEGIN{@$b[1,3,4,6,2,5,$|]=((&quot;aaaa&quot;)x4,(&quot;aaa&quot;)x2,&quot;Aaaa&quot;);@$b[9,8,12,11,7,13,10]=sort{$a&lt;=&gt;$b}(4853,271082,9171,17007,238034,141058,172191)}$:++for 1..$a;push@$b,$:;$;&lt;2&amp;&amp;next;40%$;or$$b[$#$b-1].=pop@$b}&lt;/pre&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-489671&quot;&gt;&lt;p&gt;-- &lt;br /&gt;David Serrano&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>The Shining (reasonablekeith)</title>
    <link>http://prlmnks.org/html/576675.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/576675.html</guid>

    <description>
        Okay, so it&#39;s not the best code ever, and I wouldn&#39;t have started it were it not for Acme::Bleach, but it made me chuckle, and it is Friday  :)&lt;p&gt;NOTE 1: like Bleach, this overwrites your source code on first run.&lt;p&gt;NOTE 2: The correct pronunciation is &#39;shin&#39;-&#39;ing&#39;, (do you want us to be sued?) :)&lt;pre class=&quot;block_code&quot;&gt;#!/usr/bin/perluse Acme::The_Shining;all wOrK anD NO play mAKEs jAck A DuLl bOyALl WORk aND No Play mAkes jack A dulL boY.alL work ANd nO pLaY MAkeS jaCK a dUlL boY.alL WOrK ANd nO PlaY makes jAck A dUll BOy.ALL WoRK aNd no pLAy MAKes JAcK A DulL BOY.alL woRk and No PlAY MakeS JaCK A dulL boy.All wORK aND&lt;/pre&gt;&lt;p&gt;I&#39;m sure that this can be done a lot more efficiently, but I only did it for giggles, so all you golfers out thereplease feel free to knock this down to 6 characters.&lt;p&gt;Very simply, it encodes the original program in to a binary represention using uppercase for 1&#39;s and lowercase for 0&#39;s.&lt;p&gt;here&#39;s the source...&lt;pre class=&quot;block_code&quot;&gt;package Acme::The_Shining;$VERSION = &#39;0.01&#39;;my $template = &quot;\nall work and no play makes jack a dull boy.&quot;;my $buff = reverse $template;sub encode { while ($_[0] =~ m/(.)/sg) { foreach my $bit (split //, sprintf  &quot;%08b&quot;, ord($1)) { while(1){($char = get_char()) !~ /[a-z]/ or last; $rts  .= $char;} $rts .= $bit ? uc($char) : $char; } }$rts }sub decode { while ($_[0] =~ m/(.)/sg) { my $char = $1; next if $char !~  m/[a-z]/i; $bin .= $char eq uc $char ? 1 : 0;if (length($bin) == 8 ) {  $rts .= chr(to_dec($bin)); $bin = &quot;&quot;; } }$rts }sub get_char {$buff=length($buff)&lt;2 ? $buff. reverse$template:$buff;chop $buff}sub to_dec { return unpack(&quot;N&quot;, pack(&quot;B32&quot;, substr(&quot;0&quot; x 32 . shift, -32))) }sub is_shiny { $_[0] =~ m/^[abcdejklmnoprsuwy. \n]*$/si };open 0 or print &quot;Can&#39;t repolish &#39;$0&#39;\n&quot; and exit;my $pgm = join &quot;&quot;, &lt;0&gt;;my ($head,$code) = ($pgm =~ m/(.*^\s*use\s+Acme::The_Shining\s*;\n)(.*)/sm);exit eval($head . &quot;\n&quot; . decode($code)) if is_shiny($code);open 0, &quot;&gt;$0&quot; or print &quot;Can&#39;t polish &#39;$0&#39;\n&quot; and exit;print {0} $head, encode($code) and exit;&lt;/pre&gt;&lt;!-- Node text goes above. Div tags should contain sig only --&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-425417&quot;&gt;&lt;font size=&quot;-2&quot;&gt;---&lt;br/&gt;&lt;i&gt;my name&#39;s not Keith, and I&#39;m not reasonable.&lt;/i&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>Sometimes I wonder Y (cephas)</title>
    <link>http://prlmnks.org/html/575524.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/575524.html</guid>

    <description>
        Aristotle wrote a good journal entry about the Y-combinator &lt;a href=&quot;http://use.perl.org/~Aristotle/journal/30896&quot;&gt;here.&lt;/a&gt;  But it really made me ask:&lt;br&gt;&lt;br&gt;&lt;pre class=&quot;block_code&quot;&gt;                            sub{        my($f        )=@_ ;sub{                             my(        $x)         =@_     ;$f                              -&gt;(       sub         {$x    -&gt;($x                               )-&gt;     (@_)           })   }-&gt;(                                sub   {my(                $y)=                                 @_; $f-&gt;               (sub                                  {$y-&gt;                 ($y)                                 -&gt;(@_                  )})}                                )}-&gt;                    (sub                               {my(                     $r)=                              @_;                       sub{                             my$l                       =pop                            @_;                         print                          &quot;$l&quot;;                         if($#_                         &lt;0){       print$/;return;}$r-&gt;(                            @_);}})-&gt;(qw(r o t a n i b m o c                             - Y));&lt;/pre&gt;&lt;/br&gt;I find the code more interesting than the art...
    </description>
</item>

        

<item>
    <title>The accidental fractal (jimt)</title>
    <link>http://prlmnks.org/html/574513.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/574513.html</guid>

    <description>
        &lt;p&gt;So I was golfing down my code for my [id://574225] and had gotten down to 287 characters. But I could use one of the tricks I thought up to shave down [teamster_jr]&#39;s version to 285 characters, so I wasn&#39;t going to claim the lead yet.&lt;/p&gt;&lt;p&gt;I flipped around the logic in the main conditional and shaved it down to 283 characters (I thought) and figured that would do it. But instead of playing the game of life, the gameboard instantly converged on the [wp://sierpinski gasket]. That&#39;s right - instead of creating a shorter version of the game of life, I&#39;d accidentally created a fractal generator.&lt;/p&gt;&lt;p&gt;I went through and ripped out all the unnecessary game of life stuff from it (looping, timers, random seeding of cells, etc.) and the result is a pure ascii output of the sierpinski gasket. I also re-formatted it to be somewhat easier to read, but remember, this is the result of golfing and obfuscation, so it still won&#39;t be that easy to read.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;my $s = 150;@a = 0..$s;for $r (@a) {  $b[$r][$_] = $&quot; for @a }{  for $r (@a) {    for (@a) {      $h = 0;      for $i ($r-1..$r+1) {        for $j ($_-1..$_+1) {          $h++ if            $b[$i][$j] ne $&quot;            &amp; $i &gt;= 0            &amp; $i &lt;= $s            &amp; $j &gt;= 0            &amp; $j &lt;= $s            &amp; $i ^ $r            &amp; $j ^ $_        }      }      $e[$r][$_] = $h == 3        ? 0        : $b[$r][$_] ne $&quot; &amp; $h == 2          ? 0          : $&quot;    }  }  print map{ @{$e[$_]}, $/ } @a;}&lt;/pre&gt;&lt;p&gt;I just think it&#39;s incredible that an incorrect application of DeMorgan&#39;s rules was all it took to turn the game of life into the sierpinski gasket. Stephen Wolfram would be proud of me. It sure made my day.&lt;/p&gt;
    </description>
</item>

        

<item>
    <title>Let The Games Begin! (zshzn)</title>
    <link>http://prlmnks.org/html/574321.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/574321.html</guid>

    <description>
        I, for one, am terribly excited over the upcoming chess match in Kalmykia starting tomorrow. Finally, the chess world gets to reunite under one champion, and, not coincidentally, both competitors are very worthy of the title. It should be a match defining its generation. So I thought I would hail the coming of the new world with this humble knight, who will remind us of where the two competitors left off against each other.&lt;pre class=&quot;block_code&quot;&gt;       $b[$_]=chr      ($_%9?0x2E :     0xA)for 1..72;    $d=&quot;6r7k15p17p23   n25p32p34b37p39b41  P55P60 Q61P62P65q66 N67R6   9R71K&quot;;$d=~  s/\s   +//xg;$b[$1        ]=$2while$d=~        /(\d+)(\D)/g;       $d=&quot;Kramnik&quot;;$c      =&quot;Topalov&quot;;shift      @b;unshift @b,&#39; &#39;          .$c,chr        10;push @b,$       d,chr 0xA; $,=     chr 0x20; print@b;&lt;/pre&gt;Who are &lt;b&gt;you&lt;/b&gt; rooting for?&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-468732&quot;&gt;&lt;p&gt;--&lt;br&gt;brian d foy&#39;s embarrassment to Perl, and just a mean person.&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>Game of Life (jimt)</title>
    <link>http://prlmnks.org/html/574225.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/574225.html</guid>

    <description>
        &lt;p&gt;I don&#39;t know if this would be considered an obfuscation or a golfing exercise, but nonetheless, in only 451 characters, I present you with [link://http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life|John Conway&#39;s Game Of Life].&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;my($a,$c,$g,@b)=(40,10);$\=$/;for my$r(0..$a){$b[$r][$_]=!int(rand($c))?&#39;*&#39;:$&quot;for(0..$a)}sub g{my($d,@e);for my$r(0..$a){for(0..$a){my$h=0;formy$i(-1..1){for my$j(-1..1){my($f,$g)=($r+$i,$_+$j);next if$f&lt;0||$f&gt;$a||$g&lt;0||$g&gt;$a||!($i||$j);$h++if$b[$f][$g]ne$&quot;}}$e[$r][$_]=($b[$r][$_]ne$&quot;&amp;&amp;$h==2)||$h==3?&#39;*&#39;:$&quot;;$d++if$e[$r][$_]ne$b[$r][$_]}}@b=@e;$d}do{print`clear`,++$g;for my$r(0..$a){print map{$b[$r][$_]} (0..$a)}select $&amp;,$&amp;,$&amp;,.4}while(&amp;g)&lt;/pre&gt;&lt;p&gt;&lt;b&gt;Update -&lt;/b&gt; Using a few tricks I picked up from teamster_jr&#39;s wonderful version below (and a few golf tricks I always seem to forget to implement, I knocked it down to 366 characters.&lt;p&gt;&lt;pre class=&quot;block_code&quot;&gt;$a=40;$\=$/;@a=0..$a;for$r(@a){$b[$r][$_]=!int rand 10?0:$&quot;for@a}sub g{my($d,@e);for$r(@a){for(@a){$h=0;for$i(-1..1){for$j(-1..1){$f=$r+$i;$k=$_+$j;$h++if$b[$f][$k]ne$&quot;&amp;&amp;!($f&lt;0||$f&gt;$a||$k&lt;0||$k&gt;$a||!$i&amp;&amp;!$j)}}$*=$e[$r][$_]=$h==3?0:$b[$r][$_]ne$&quot;&amp;&amp;$h==2?0:$&quot;;$d++if$*ne$b[$r][$_]}}@b=@e;$d}{print&quot;\ec&quot;,++$g,$\,map{@{$b[$_]},$\}@a;select$&amp;,$&amp;,$&amp;,.1;redo if&amp;g}&lt;/pre&gt;&lt;spoiler&gt;&lt;p&gt;Note that this spoiler applies to the original 451 character version. This one&#39;s pretty straightforward once you re-format:&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;my ($a, $c, $g, @b) = (40, 10);$\=$/;for my $r (0..$a) { $b[$r][$_] = ! int(rand($c)) ? &#39;*&#39; : $&quot; for(0..$a)}sub g { my ($d, @e); for my $r (0..$a) {  for (0..$a) {   my $h=0;   for my $i (-1..1) {    for my $j (-1..1) {     my ($f, $g) = ($r + $i, $_ + $j);     next if $f &lt; 0 || $f &gt; $a      || $g &lt; 0 || $g &gt; $a      || !( $i || $j );     $h++ if $b[$f][$g] ne $&quot;    }   }   $e[$r][$_] = ( $b[$r][$_] ne $&quot; &amp;&amp; $h == 2 ) || $h == 3    ? &#39;*&#39;    : $&quot;;   $d++ if $e[$r][$_] ne $b[$r][$_]  } } @b=@e; $d}do{ print`clear`, ++$g; for my $r (0..$a) {  print map { $b[$r][$_] } (0..$a) } select $&amp;, $&amp;, $&amp;, .4} while (&amp;g)&lt;/pre&gt;&lt;p&gt;But I&#39;ll do you one better! It&#39;s even more straightforward when you rename the variables to something useful.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;my ($board_size, $random_seed, $generation, @board) = (40, 10);$\=$/;for my $r (0..$board_size) { $board[$r][$_] = ! int(rand($random_seed)) ? &#39;*&#39; : $&quot; for(0..$board_size)}sub generate { my ($evolved, @new_board); for my $r (0..$board_size) {  for (0..$board_size) {   my $neighbors=0;   for my $i (-1..1) {    for my $j (-1..1) {     my ($neighbor_row, $neighbor_col) = ($r + $i, $_ + $j);     next if $neighbor_row &lt; 0 || $neighbor_row &gt; $board_size      || $neighbor_col &lt; 0 || $neighbor_col &gt; $board_size      || !( $i || $j );     $neighbors++      if $board[$neighbor_row][$neighbor_col] ne $&quot;    }   }   $new_board[$r][$_] =    ( $board[$r][$_] ne $&quot; &amp;&amp; $neighbors == 2 ) || $neighbors == 3     ? &#39;*&#39;     : $&quot;;   $evolved++ if $new_board[$r][$_] ne $board[$r][$_]  } } @board=@new_board; $evolved}do{ print`clear`, ++$generation; for my $r (0..$board_size) {  print map { $board[$r][$_] } (0..$board_size) } select $&amp;, $&amp;, $&amp;, .4} while (&amp;generate)&lt;/pre&gt;&lt;p&gt;At this point, I&#39;ll leave the rest of the explanation as an exercise for the reader.&lt;/p&gt;&lt;/spoiler&gt;
    </description>
</item>

        

<item>
    <title>Looking for the Obfuscation Hints (shlomif)</title>
    <link>http://prlmnks.org/html/573314.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/573314.html</guid>

    <description>
        &lt;p&gt;Hi all!&lt;/p&gt;&lt;p&gt;I&#39;m the editor of the Dmoz.org Perl &quot;FAQs, Help and Tutorials&quot; category. In the course of my work, I now have the following broken link:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://jynx.perlmonk.org/content/obfuhints.shtml&quot;&gt;http://jynx.perlmonk.org/content/obfuhints.shtml&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This is the domain perlmonk.org which belongs here. I&#39;d like to know where I can find this page again.&lt;/p&gt;&lt;p&gt;Regards, -- Shlomi Fish&lt;/p&gt;
    </description>
</item>

        

<item>
    <title>The Undefinite Japh (liz)</title>
    <link>http://prlmnks.org/html/571398.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/571398.html</guid>

    <description>
        &lt;pre class=&quot;block_code&quot;&gt;@x=split$y,q{Tie Just Another Perl HackerFirst};$&quot;=$y,;eval uc(&quot;*a&#39;@x[29,18,33,24,22]&quot;).&#39;=sub{$x[$y++],};&#39;.uc(&quot;*a&#39;@x[0..2]&quot;).(ref\$y).&#39;=sub{bless\$y,$x[9]}&#39;;($a=$b=&quot;Internal::READONLY\${\\undef},0&quot;)=~s#::?#s::Sv#x;eval$a;tie${\undef},$x[9];$a=();$b=();$c=();$d=undef;print@a[99..123]=();&lt;/pre&gt;Inspired by Juerd&#39;s undefined presentation at YAPC::Europe 2006.&lt;P&gt;Liz
    </description>
</item>

        

<item>
    <title>Pi golf: (Robbjedi)</title>
    <link>http://prlmnks.org/html/571309.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/571309.html</guid>

    <description>
        One liners to output approximations of Pi to arbitrary precision!Note: The idea is for the program to directly calculate pi rather than obfuscate it in the code somehow.I will start us off at 82, a  lot of room for improvement:&lt;pre class=&quot;block_code&quot;&gt;@_=map(1/$_,map($_**2,1...1000000));for $a(@_){$s+=$_[$i++];}$s*=6;print sqrt($s);&lt;/pre&gt;Edit:Cleaned up a bit for 68:&lt;pre class=&quot;block_code&quot;&gt;for(@_=map(6/$_,map($_**2,1..1000000))){$s+=$_[$i++]}print sqrt($s);&lt;/pre&gt;Edit edit: We both realized the same thing at the same time apparently.
    </description>
</item>

        

<item>
    <title>First obfuscation (Robbjedi)</title>
    <link>http://prlmnks.org/html/571234.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/571234.html</guid>

    <description>
        Not brilliance, but not horrible for a first ( at least I hope?)&lt;pre class=&quot;block_code&quot;&gt;        for($i=1;$i&lt;1000000;               $i++)        {@.                     [$i]=((        $i+                     $i+$i+$i+             $i)        *                                   $i        )/                  (5);            $        _+=      (($.[$.[$.[               1]]]        +$.[1])                             /2        ) /$.                              [$i]        ;}$_=                              sqrt        ($_*                                ($.[        2]+2)        );print;&lt;/pre&gt;
    </description>
</item>

        

<item>
    <title>Mary had a Little Camel (SubStack)</title>
    <link>http://prlmnks.org/html/571140.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/571140.html</guid>

    <description>
        &lt;pre class=&quot;block_code&quot;&gt;perl -e&#39;%c=map{[a..z]-&gt;[log($_)/log(2)*8-48],$_}map 2**($_/8),6*8..8*8; print((((chr)x($_/16)).(&quot;\x00&quot;x(256-$_)/16))x128)for map{$c{$_},0}&quot;jklkjjj0kkk0j0g0g00jklkjjjjkkjkl&quot;=~/./g&#39;&gt;&gt;/dev/dsp&lt;/pre&gt;Optionally, adjust x128 to make it play faster or slower.&lt;br /&gt;(Thanks to tybalt89 on freenode for the =~/./g suggestion)
    </description>
</item>

        

<item>
    <title>Visually-Interlaced Mesmerizing Japh (liverpole)</title>
    <link>http://prlmnks.org/html/570893.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/570893.html</guid>

    <description>
        This Japh needs gvim 7.0 installed.&amp;nbsp;&amp;nbsp;(Note that it &lt;i&gt;has&lt;/i&gt; to be version 7.0; earlier versions won&#39;t support the scripting commands used).&lt;p&gt;When I wrote [id://567147|this Japh], I didn&#39;t know any vim-scripting, so I had to take a more basic approach.&amp;nbsp;&amp;nbsp;Shortly afterwards I devised the algorithm for this one, and thought if I could learn enough vim scripting commands, it shouldn&#39;t take more than a couple of days to program.&amp;nbsp;&amp;nbsp;Surprisingly, it took a lot longer than expected, but partly because, as it evolved, I kept wanting to get it &quot;just right&quot;.&amp;nbsp;&amp;nbsp;One challenge was &quot;golfing&quot; the vim script to make it all fit into the Japh.&amp;nbsp;&amp;nbsp;(If you know any vim commands, you&#39;ll see a lot of command abbreviations :-D).&lt;p&gt;It&#39;s been tested on both Windows and Linux.&amp;nbsp;&amp;nbsp;When you get tired of watching it run, just type ^C to stop.&amp;nbsp;&amp;nbsp;It does create a temp file &quot;v.tmp&quot; which can be deleted afterwards.&amp;nbsp;&amp;nbsp;If there&#39;s any interest, I may also provide the &quot;meta-program&quot; which generates the Japh.&amp;nbsp;&amp;nbsp;Of course, it would be fun to see if anyone can figure out the mechanics of how it works first.&lt;pre class=&quot;block_code&quot;&gt;s&#39;&#39;::jjJjJ:rBBRscCC[kkKjj:JjJ*&gt;&gt;NN&gt;NnFvvV2brrrBb:JZ::jj**:ZJ::JJJ*::jjJj::JBTtTDT4=[sR2rRRr*[k;ZnNn&gt;&gt;.&gt;Dus37GG7GGW7BbrBBZjjjJj::*JjjJ:jZJjZZ*::JbRtddDeUuDbBBr2BrRFnoO/&gt;N.^VB4UCWWGwWWGggffv6brJZjjl,&lt;j*Zk;,l&lt;Jj:jjJ:jRbtd2scSrdtCbbhhHid*:&lt;Q?`Phb2DDVfVvggFFfVFvFFvVV6*L,&lt;L,lJ=-L&lt;%L:jJJJ:J*Zdtcs2brdiwwx8Vw9el:&lt;xIYxT2rTHvVvvg7vfgwfvFfggfFii1A=L&lt;]M]]-&lt;&lt;LZJj:j*:Zl=m&lt;@xXX7WIhfVG7UT2TXFWSRbbXhfffhyix8y98Fffw7fwIhHh`qP@m]&lt;&lt;%%lZjZZ:ZZ*@AQ@hXhf7GIXhXyIudBdhVC3brFHhbr6fwWRBgcrbvfcCbg9HHXH`P`a1@@LLlJj:jn.Nn@a?&gt;6Vf6FgxHF6f7BrBtxRSsRvvHxrBfFG7BRSwFBr2gwbCgyyyYXxP1q@pp@&gt;^jj:JJZZ0A?N^gG6FfvHHfvvrTsED2scFVFxX6v6FgwBBgwvrRvGG2Rf6XHyIxhQ1@P,:*:Zj&lt;&lt;ZjjlMk:&gt;/_W6VFvXh88DcsEDbswvVvGI4tfgWFrBww6BbwWgbsvFF0q9XxE=lLZ::*j*%%jJ*:Zk[Jj+K?G6FvV6FcsCBbryyVvFF7Sc7GfFRBvwgC3F_w2bw77?=,Td4MM+:jZJ*:L,**:Zj:;[jjjKkCC7wgGSCrBbgyhF6FfvBBfvvvSsFF6Rb.NFvFrbR*:L4D,&lt;Zj::ZjjjLl::*jZZJ:k;JZj[[CcCCnVFVwGV6V.66FbrFFfnssVvFF.nZjRBrRrjZRtl%^^Z:*:Zj:&lt;%jjjJj:&lt;,l-+J:j:lL*:ZbtuwFHxN^hxvt5iH&gt;.Og8XDd&lt;jJ*:brBBbjjjLn&gt;&gt;.JZ*J:j&lt;l:*:Zj&lt;@^jjlMo?;-m[;KCuDbbt%&gt;6Hhhvww@`.;]t2Br&lt;l::*:rR2BZj::^nnnJj::*Z&lt;,J:jj%%&gt;N*:j%PN:%L*::*TDBR%,*BdtBB[kllJmEB2RZlL:jjZZRBrJ:j:n^NN:ZJ*::,L::JZ,,&gt;_k;;]pnkKlA?/QXrRBmQ_/0Dbw7cm-6IE2C??q`^::+ooSwvN;;.o__JJ*:jZ,&lt;Zj::%lonJj:E9VSsW&lt;l%M76B[apjk=`*Fgctxvee[nn:=1nN+kNNw7gn;cwWoo**:JZZ%,::Jj*Tx6fFH9_&gt;;[jj%l3wVS_pLj*M=:.o3Hxb3u8^Zl=m.?K:n&gt;BcCJ+;jFFrbjZZ:J*&lt;tDBrbrgi=M-;o&gt;;k^n``gg6;?P&lt;ZJ]=2FgWX%rCcXXPnAQn/;[_wss[Z[kj::2bb2::RBr2bb2BCO&gt;Zjj[o.;_nJJbswfk_nJJ*;cr6gs6.:C3v.**;]jK[rFH4BZj;=%nnjRtDB*r22RBrBrC7&gt;ZZjko&gt;[/FbrRcw&gt;:;?.:kK&gt;j&gt;?k:j&gt;O+&lt;^^jmm:^cshxdL+:]=@XVFTdtTjBBrBrrRbbwwCCkk/.KCV6FfwO^jZkoO_nJj^nkk;J?OZ&lt;@Pq/&gt;jZ;o1]k:RCE4FfbbtL::*ZZ*BBRrRbrBrBB*::jjJjZZ*::J::*ZZ*::J::j:j:ZZ*::J::J:Rr2BbBBbr2jZjJj:Z&#39;;s!$/!!g;s!%!\\!g;sub l{int((-42+ord pop)/16)}while(s/(.)(.)(.)//){$&quot;.=chr(2+5*(5*l($1)+l$2)+l$3)}eval$&quot;#liverpole~Just+another+Perl+hacker&lt;/pre&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-465654&quot;&gt;&lt;hr /&gt;&lt;font size=&quot;1&quot;&gt;s&#39;&#39;(q.S:$/9=(T1&#39;;s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>I&#39;m amusing myself trying to obfuscate a little script ... (hoaf)</title>
    <link>http://prlmnks.org/html/570842.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/570842.html</guid>

    <description>
        ... that formats a text file for, um, legibility.&lt;p&gt;Just cat a file through it and voila!  It&#39;s pretty.&lt;p&gt;&lt;pre class=&quot;block_code&quot;&gt;#!/usr/local/bin/perl -n@x = ( { Begin =&gt; &quot;{&quot;, End =&gt; &quot;}&quot; }, &quot;(?:Attribute|Motion|Transform|World|Frame)&quot; );$i-- if(/^\s*$x[1]End/ &amp;&amp; $i);/^\s*\#/?s/^\s*//:s/^\s*/&quot; &quot;x(4*$i)/e;s/^(\s*$x[1](Begin|End).*)$/$1.(m|\#[\{\}]$|?&quot;&quot;:&quot; #$x[0]{$2}&quot;)/e;print;$i++ if(/^\s*$x[1]Begin/);&lt;/pre&gt;Any ideas?  I figure that I should be able to do something that combines the two regular expression lines, then do something else to mask the data, but I&#39;m new to the whole obfuscation thing.  :^)&lt;p&gt;Thanks!&lt;p&gt;hoaf
    </description>
</item>

        

<item>
    <title>some substitution code from my C parser (wojtyk)</title>
    <link>http://prlmnks.org/html/570489.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/570489.html</guid>

    <description>
        Wasn&#39;t even trying to obfuscate.Just trying to minimize the use of vertical space by compressing maximum functionality into a small space while maintaining clarity.&lt;pre class=&quot;block_code&quot;&gt;$stoken = &#39;STRING&#39;;$ltoken = &#39;LITERAL&#39;;# sub out literals, strings, and one-line comments    s#(&#39;([^&#39;\\]|\\.)*&#39;)                     |      (L?&quot;([^&quot;\\]|\\.)*&quot;)                   |      ((_T|_TEXT)\(&quot;([^&quot;\\]|\\.)*&quot;\))       |      (/\*([^*]|\*+[^/*])*\*+/)             |      (//[^\n]*)                    #            ( ( defined $1 || defined $5 ) &amp;&amp; $ltoken ) ||              ( defined $3 &amp;&amp; $stoken )                                    #gexo;&lt;/pre&gt;
    </description>
</item>

        

<item>
    <title>some trigraph conversion code from my C parser (wojtyk)</title>
    <link>http://prlmnks.org/html/570486.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/570486.html</guid>

    <description>
        I wasn&#39;t even trying to obfuscate.It just seems senseless to break it out into multiple lines when it just works and minimizes vertical waste&lt;pre class=&quot;block_code&quot;&gt;# convert trigraphs automagicallymy $t;s#\?\?([=(/)&#39;&lt;!&gt;-])#($t=$1)&amp;&amp;($t=~tr/=(\/)&#39;&lt;!&gt;-/\#[\\]^{|}~/)&amp;&amp;($t)#ge;&lt;/pre&gt;
    </description>
</item>

        

<item>
    <title>Not a strictly punctuational JAPH (chargrill)</title>
    <link>http://prlmnks.org/html/570289.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/570289.html</guid>

    <description>
        &lt;pre class=&quot;block_code&quot;&gt;#!/usr/bin/perluse strict;$.=$ ^F,$;=$./$ .,$_=$.&lt;&lt;$ .*$.+$;,$ ==$.&lt;&lt;$.,$ *=$=+$.=&gt;$ %=$.*$_;$ &quot;=$%-$*,$-=$ =-$.=&gt;$?=$ %-$.,$:=$;+$ .;$!=$_/$.,$ @=$&quot;-$=-$ --$:,$/=$?+$;-$*-$:,$#=pack&#39;c*&#39;,$_+$ *,$?+$ ;-$*,$?+$ ;-$*-$.,$ &quot;-$.,$!,$_+$ !+$./$.,$&quot;-$=,$&quot;-$=+$./$ .,$ &quot;-$.,$&quot; -$=-$-,$ @,$/,$ !,$_+$ *+$ *-$.*$ .,$@,$/,$ &quot;-$=-$.,$ !,$&quot;-$=-$- ,$_+$!+$ ;,$_+$!+$;+$ . ,$?+$ . /$.-$*-$ * ,$@,$/,$ !+$ *+$ . ;print $;;&lt;/pre&gt;&lt;!-- Node text goes above. Div tags should contain sig only --&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-474411&quot;&gt;&lt;br&gt;&lt;br&gt;--chargrill&lt;hr&gt;&lt;font size=2&gt;&lt;pre class=&quot;block_code&quot;&gt;$,=42;for(34,0,-3,9,-11,11,-17,7,-5){$*.=pack&#39;c&#39;=&gt;$,+=$_}for(reverse split//=&gt;$*){$%++?$ %%2?push@C,$_,$&quot;:push@c,$_,$&quot;:(push@C,$_,$&quot;)&amp;&amp;push@c,$&quot;}$C[$#C]=$/;($#C&gt;$#c)?($ c=\@C)&amp;&amp;($ C=\@c):($ c=\@c)&amp;&amp;($C=\@C);$%=$|;for(@$c){print$_^$$C[$%++]}&lt;/pre&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>Sinusoidal japh (imp)</title>
    <link>http://prlmnks.org/html/569822.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/569822.html</guid>

    <description>
        My first obfu:&lt;pre class=&quot;block_code&quot;&gt;print join(&#39;&#39;,@$_),&quot;\n&quot; for map{@$_-&gt;[0]}map{[[map{@$a=(@$a,1);int sin($_*0.1)*8==$b-8?[j,a,p,h]-&gt;[$#$a%4]:&#39; &#39;}@$_],$b++]}([1..80])x16;&lt;/pre&gt;&lt;readmore title=&quot;View output&quot;&gt;&lt;pre&gt;                                          phjaphjaph                                                                   hja          ja                                                                p               ph                                                            ja                  j                                                          h                     a                                                       ap                       ph                                                    j                           j                   j                             ph                             aph                 a                          ja                                  j                 p                        h                                     a                 hj                     p                                       ph                 a                  ja                                          j                 ph              ph                                             ap                 ja          ja                                                 hj                 phjaphjaph                                                     aphjaph&lt;/pre&gt;
    </description>
</item>

        

<item>
    <title>Egyptian fractions (jimt)</title>
    <link>http://prlmnks.org/html/569404.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/569404.html</guid>

    <description>
        &lt;p&gt;Probably not my best obfuscation, but I&#39;m proud of some parts of it. Takes a fraction as an argument and returns the &lt;a href = &quot;http://en.wikipedia.org/wiki/Egyptian_fraction&quot; target = &quot;_blank&quot;&gt;egyptian fraction&lt;/a&gt; for that number.&lt;/p&gt;&lt;p&gt;For example:&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;clark:~/Desktop jim$ ./egypt.pl 19/2019/20 = 1/2 + 1/3 + 1/9 + 1/180clark:~/Desktop jim$ ./egypt.pl 18/2018/20 = 1/2 + 1/3 + 1/15&lt;/pre&gt;&lt;pre class=&quot;block_code&quot;&gt;sub egypt {my$f=2;do{return(--$f,egypt($_[0]/$f))unless$_[0]%$f++}while$_[0]&gt;1}print&quot;$ARGV[0] = &quot;,join(&#39; + &#39;,pharaoh(hiero(split &#39;/&#39;,$ARGV[0]))),&quot;\n&quot;;sub hiero{my(%nf,%df);$nf{$_}++for egypt(shift);++$df{$_}for egypt(shift);do{($df{$_},$nf{$_})=($df{$_}-$nf{$_},$nf{$_}-$df{$_})if$df{$_}}for keys%nf;return(eval join(&#39;*&#39;,1,(map{($_)x$nf{$_}}keys%nf)),eval join(&#39;*&#39;,1,(map{($_)x$df{$_}}keys%df)))}subpharaoh {return$_[0]==1?&quot;$_[0]/$_[1]&quot;:(&quot;1/&quot;.(int($_[1]/$_[0])+1),pharaoh(hiero($_[0]*(int($_[1]/$_[0])+1)-$_[1],$_[1]*(int($_[1]/$_[0])+1))))}&lt;/pre&gt;&lt;spoiler&gt;&lt;p&gt;Since I know people like to know how these things work, I&#39;ll explain it. First, as always, we&#39;ll re-format to pretty it up.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;sub egypt {my $f = 2;do {return (--$f, egypt($_[0] / $f)) unless $_[0] % $f++} while$_[0] &gt; 1;}print &quot;$ARGV[0] = &quot; , join(&#39; + &#39;,pharaoh(hiero(split &#39;/&#39;, $ARGV[0]))), &quot;\n&quot;;sub hiero {my (%nf, %df);$nf{$_}++ for egypt(shift);$df{$_}++ for egypt(shift);do {($df{$_}, $nf{$_}) = ($df{$_} - $nf{$_}, $nf{$_} - $df{$_})if $df{$_} } for keys %nf;return (eval join(&#39;*&#39;, 1, (map {($_) x $nf{$_}} keys %nf)),eval join(&#39;*&#39;, 1, (map {($_) x $df{$_}} keys %df)));}sub pharaoh {return $_[0] == 1 ? &quot;$_[0]/$_[1]&quot; : ( &quot;1/&quot; . (int($_[1] / $_[0]) + 1), pharaoh(hiero($_[0] * (int($_[1] / $_[0]) + 1) - $_[1], $_[1] * (int($_[1] / $_[0]) + 1))))}&lt;/pre&gt;&lt;p&gt;The first function is arbitrarily named &#39;egypt&#39; to make it blend it. It returns the prime factorization of whatever number is passed into it. I&#39;m fairly proud of this one.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;sub egypt {my $f = 2;do {return (--$f, egypt($_[0] / $f)) unless $_[0] % $f++} while$_[0] &gt; 1;}&lt;/pre&gt;&lt;p&gt;We initialize an arbitrary variable ($f) to 2 (smallest possible divisor), then, as long as the number we&#39;ve passed in is &gt; 1, check to see if it&#39;s divisible by $f. If it is, then return a list starting with $f and appending the recursed prime factorization of the number / $f. Note that we post increment $f to let us jump up to the next number (if the modulus is nonzero), so we pre-decrement it before returning so we actually have the one that was the divisor.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;print &quot;$ARGV[0] = &quot; , join(&#39; + &#39;,pharaoh(hiero(split &#39;/&#39;, $ARGV[0]))), &quot;\n&quot;;&lt;/pre&gt;&lt;p&gt;The next block does the algorithm to find egyptian fractions, as defined up in that wikipedia link. It just calls the pharaoh function with the LCD fraction and displays the results. Simple.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;sub hiero {my (%nf, %df);$nf{$_}++ for egypt(shift);$df{$_}++ for egypt(shift);do {($df{$_}, $nf{$_}) = ($df{$_} - $nf{$_}, $nf{$_} - $df{$_})if $df{$_} } for keys %nf;return (eval join(&#39;*&#39;, 1, (map {($_) x $nf{$_}} keys %nf)),eval join(&#39;*&#39;, 1, (map {($_) x $df{$_}} keys %df)));}&lt;/pre&gt;&lt;p&gt;The hiero function just reduces a numerator &amp; denominator to lowest terms. It&#39;s easy. First, we set up some hashes. Next, we populate the prime factorization of the numerator and denominator into each hash, using the number of appearances of the number as the value. So the prime factorization of 8 is 2,2,2, and we end up with 2 =&gt; 3 in our hash.&lt;/p&gt;&lt;p&gt;Then simply loop over the keys in the numerator hash. If that key exists in the denominator hash, then delete from the opposite hash the number of times the value occurs for you. For example, if you passed in 4/8, you&#39;d end up with 2 =&gt; 2 in the numerator hash and 2 =&gt; 3 in the denominator hash. 2 is in both, so we subtract 3 from the numerator hash&#39;s value and 2 from the denominator hash&#39;s value, ending up with 2 =&gt; -1 in the numerator hash and 2 =&gt; 0 in the denominator hash.&lt;/p&gt;&lt;p&gt;This ensures that any common factors are removed from the numerator and denominator. Next, all we need to do is map out the factors and repeat them the number of times they appear in the hash. So 2 =&gt; 3 turns into (2,2,2). We toss on a 1 to this list to avoid errors when there are no factors left. Then we just join those lists with asterisks and eval &#39;em, yielding the LCD.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;sub pharaoh {return $_[0] == 1 ? &quot;$_[0]/$_[1]&quot; : ( &quot;1/&quot; . (int($_[1] / $_[0]) + 1), pharaoh(hiero($_[0] * (int($_[1] / $_[0]) + 1) - $_[1], $_[1] * (int($_[1] / $_[0]) + 1))))}&lt;/pre&gt;&lt;p&gt;pharaoh here is where the magic is. It takes a numerator and denominator as arguments, then recursively builds up the list of unit fractions to return. First of all, if the numerator is 1, then return numerator / denominator (we&#39;re done). Otherwise, we apply the algorithm and return a list consisting of int( 1 / (denominator / numerator) ) + 1, and the result of calling pharaoh on the LCD form of the fraction minus the value we just calculated. Further explanation is left as an exercise to the reader, but I&#39;d recommend assigning this &lt;b&gt;(int($_[1] / $_[0]) + 1)&lt;/b&gt; to a variable and replacing in the function, it&#39;ll be clearer.&lt;/p&gt;&lt;/spoiler&gt;
    </description>
</item>

        

<item>
    <title>BF interpreter (gustavderdrache)</title>
    <link>http://prlmnks.org/html/569217.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/569217.html</guid>

    <description>
        A friend of mine, EnragedTux, wrote a BF interpreter in Perl.  He wanted to shorten it up, and I came up with this.  He told me to say that he helped out. :)&lt;pre class=&quot;block_code&quot;&gt;#!/usr/bin/perlopen P,shift;%p=(&#39;&gt;&#39;,sub{$p++},&#39;&lt;&#39;,sub{$p--},&#39;+&#39;,sub{$p[$p]++},&#39;-&#39;,sub{$p[$p]--},&#39;.&#39;,sub{print chr$p[$p]},&#39;,&#39;,sub{$p[$p]=ord getc},&#39;[&#39;,sub{&amp;c} ,);sub p{ exists$p{$_[0]}&amp;&amp;&amp;{$p{$_[0]}}}p getc P until eofP; sub c{push@c,getc P until$c[@c-1]eq&#39;]&#39;;do{p$_ for@c}while$p[$p]}&lt;/pre&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-497079&quot;&gt;&quot;If you go on with this nuclear arms race, all you are going to do is make the rubble bounce&quot; -- Winston Churchill&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>Fourth time&#39;s the charm JAPH (dewey)</title>
    <link>http://prlmnks.org/html/568787.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/568787.html</guid>

    <description>
        I&#39;ve been running this in ActivePerl, but I think it should work fairly universally...Update: thanks to Hue-Bond for the heads-up on the warnings, here&#39;s version 2:&lt;pre class=&quot;block_code&quot;&gt;#!/usr/bin/perlsub {$_=&quot;/(Just).*( another).*( Perl).*( hacker,)/,print\$&quot;.((caller)[2]-1);eval}-&gt;();sub {$_=&quot;/(Just).*( another).*( Perl).*( hacker,)/,print\$&quot;.((caller)[2]-1);eval}-&gt;();sub {$_=&quot;/(Just).*( another).*( Perl).*( hacker,)/,print\$&quot;.((caller)[2]-1);eval}-&gt;();sub {$_=&quot;/(Just).*( another).*( Perl).*( hacker,)/,print\$&quot;.((caller)[2]-1);eval}-&gt;();&lt;/pre&gt;~dewey
    </description>
</item>

        

<item>
    <title>Emotijaph :) (chargrill)</title>
    <link>http://prlmnks.org/html/567393.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/567393.html</guid>

    <description>
        &lt;p&gt;It&#39;s been a little while for me, so I thought I&#39;d whip something up to cheer myself up.  Hopefully it brings a smile to your face as well :)&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;#!/usr/bin/perl          {;$ _=q(Ju       st a nothe        r Pe rl ha         cker              ,); s              [  \s              {2,}]              {}xsg;};$#         =$_ ;{;s(:        )(: :];);}       print           $=;;&lt;/pre&gt;&lt;!-- Node text goes above. Div tags should contain sig only --&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-474411&quot;&gt;&lt;br&gt;&lt;br&gt;--chargrill&lt;hr&gt;&lt;font size=2&gt;&lt;pre class=&quot;block_code&quot;&gt;$,=42;for(34,0,-3,9,-11,11,-17,7,-5){$*.=pack&#39;c&#39;=&gt;$,+=$_}for(reverse split//=&gt;$*){$%++?$ %%2?push@C,$_,$&quot;:push@c,$_,$&quot;:(push@C,$_,$&quot;)&amp;&amp;push@c,$&quot;}$C[$#C]=$/;($#C&gt;$#c)?($ c=\@C)&amp;&amp;($ C=\@c):($ c=\@c)&amp;&amp;($C=\@C);$%=$|;for(@$c){print$_^$$C[$%++]}&lt;/pre&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>Letters to the Editor Japh (liverpole)</title>
    <link>http://prlmnks.org/html/567147.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/567147.html</guid>

    <description>
        This one won&#39;t be obvious until you find the hidden clue and follow its instructions.&lt;p&gt;Running the program reveals the clue.&lt;pre class=&quot;block_code&quot;&gt;sub sub {$&quot;=&#39;jJPPJPJJjppHjpHAjpHAjpHAjpHAjPhAjpHAjpHAjpHAjpHAjpHAjpHAjpHAjpHAjpHAjpHAjphajphajPhAjPhajPhaJPhAjphaJPHAJPHAJPHAJPhAJPhaJPHaJphajPhaJphaJPhAjpHAJPHAJPHaJphajpHAjPhAjpHaJpHaJphaJphajPhAJPHAJPHAjPhAJPHaJpHAJPHAJPHAjphajpPhjJPpjPJJAHHJaAAjAPhhJPJjahaPaPpaapaaAHahjpjJahaJAPPJapaaJPJJaPpjaPpAaPAJapAjAPaAAPhpjpjJapHaapaaAhJhAhJHaPjAaPAHAPaAJPHJJpjjahjhapjaahapApAaJPjjaJPPApjaaHjjAPPjjPJjahAHaPpAahajApPJjpjJapJajPJJJpJPjphPAHjjApHjjpjpjpjjAHHjjjppjpjjAHHjApAAAHpjAHAjApAAApHpAHjHAppAApHHApHpjpJJApjaapHpApAjjpjjApAAApAjAppAahAjjpjjAppAApHpjpjjApAHAHApAppAApHAjpHjJPjjAhapaPPaaPHaJpjjAPhHAHjpjpJJApAAAPhaApJaApjhaHJhJPhPjPJjjPJjAaJJapaaAHjPapApaPHHAhJPAphaJpJJahhjJJppjpJJAhhjaPjAjPJjAHJhApAaaPjaaHJPApjHAPPjJPjjjpPJAHjPaPaaaPaHApAAAHPJjpjjahjhapAaapJaAHjpaPjHAPPJJPJjaPpaaPHpJPJjApAAaPHAAPJAaPjhaHjHjppAJPjjApaPAPhHAHJPJpjjAHaJAppJapaaJpJJApJhAppJApjAahJPJPHPJpJJAhJHApAAAHaJJPJjAhhJjjppjPjjAHhJaaPhAJPpAPJAAaJJappjAAHAjpHpjpjjjpjjAjpAApHpjpjjAHApAppAApHAjpHjjpjjAHAjAHjpAHpAjpjjApHHahaaahAjjpjjApAjAppAApApApApaPAAahjpApAAApHpAHAjjpjjApjHApHHApHjApHHahJPjpjJaHJhaPJHaPPJapAaapHAApaaAHJhjphPJPjjjpJJahHJJjpPJpJJJPphJPhajphaJPHAjPhAJPHAjphajphajPhAjpHAJPhaJPHAjpHaJpHaJpHAjPhAJPHAJPHAjPhAjPhAJPhaJPhajphaJPhAJPhaJPHaJpHAjphajphajphaJPhAjPhAjpHaJPhAjphaJPHaJPhaJphaJPHAjpHAJPHAjphajPhAjPhAjpHAJPHAJPHaJpHaJpHaJpHAjPhAJPHAJPpHjJPpahHpAHhPppApAjJJJaJjJhAAJapaJJaaHAaaApaappPhPPPPjjaahJAJhAHJJpPPPJAPapHPJAPh&#39;;$_=$&quot;&amp;&amp;s+\n++g;{$&quot;!~s((.))() or$O=$O&lt;&lt;2|index lc&quot;jApH&quot;,lc$1;unless (++$*%4){&#39;~&#39;ne($O=chr$O)?print$O:exit}redo}}$==&amp; sub(liverpole.8/13/06)&lt;/pre&gt;&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;:&amp;nbsp;&amp;nbsp;modified clue to take advantage of [Ray Smith]&#39;s [id://567237|observations].&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-465654&quot;&gt;&lt;hr /&gt;&lt;font size=&quot;1&quot;&gt;s&#39;&#39;(q.S:$/9=(T1&#39;;s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>My Second, first japh (jfredett)</title>
    <link>http://prlmnks.org/html/566423.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/566423.html</guid>

    <description>
        It appears that the first time I posted this, it did not go through, I think I missed hitting some button.Anyway; This is one of my first Japhs I&#39;ve ever tried. One of my CS-geek friends told me that it might not work on all systems. But I know it works on WinXP. I thought it was pretty clever for my second day in. It&#39;s probably not, but anyway...&lt;pre class=&quot;block_code&quot;&gt;$Just = $0; open(JAPH, $Just); @another = split(/\s/, &lt;JAPH&gt;); $Perl = &quot;&quot;; $hacker =&quot;,&quot;;$Perl =join(&quot; &quot;, (substr($another[0],1)),(substr($another[5],1)),(substr($another[9],1)),(substr($another[12],1))); close(JAPH); print ($Perl . $hacker);&lt;/pre&gt;The only thing I&#39;d like to really do, is figure out how to remove the readability in the function names and stuff. I tried looking at B::Deparse, which was mentioned in one of these nodes. But I don&#39;t think thats what will do it for me...~~Joe
    </description>
</item>

        

<item>
    <title>Ode for the CORE:: package (ambrus)</title>
    <link>http://prlmnks.org/html/565125.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/565125.html</guid>

    <description>
        &lt;pre class=&quot;block_code&quot;&gt;CORE::subCORE::for             {CORE::printCORE::lcCORE::for             $CORE::for             }CORE::for             (JAPH::                ){CORE::for             $CORE::for             ((CORE::m               ).|CORE::time            )g)CORE::xCORE::not             $CORE::lc              ){CORE::doCORE::for             (CORE::lc              )}CORE::lc              }CORE::__DATA__        )&lt;/pre&gt;&lt;P&gt;Update: made the script a bit nicer, &lt;spoiler&gt;changing &lt;tt class=&quot;inline_code&quot;&gt;)gx)&lt;/tt&gt; to &lt;tt class=&quot;inline_code&quot;&gt;)g)&lt;/tt&gt;&lt;/spoiler&gt;
    </description>
</item>

        

<item>
    <title>My first (fotios)</title>
    <link>http://prlmnks.org/html/564856.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/564856.html</guid>

    <description>
        I guess this isn&#39;t your typical obfuscation (it may not even technically count as an obfuscation.  But it&#39;s a little program I wrote for a t-shirt design for &lt;a href=&quot;http://www.csh.rit.edu&quot;&gt;Computer Science House&lt;/a&gt; a la the Perl camel shirt.&lt;pre class=&quot;block_code&quot;&gt;    my@a=(&quot;\012&quot;,&quot;\040&quot;,&quot;\103&quot;,&quot;\110&quot;,        &quot;\123&quot;,0);sub a{my@a=@_;for(1..$a[0]){print($a[1      ]);}}subb{abs($_)}sub c{$a[$a[$#a]+=$_[0]]}sub d      {$a=!($_[0.0]) ?                        &#39;==&#39;:$_[      0]==1.0?&#39;&gt;&#39;:&#39;&lt;&#39;;                        eval(&quot;${      _[1]}$a${_[2]}&quot;)                                      ;}sub e{&amp;c((-$a[    $#a]))}for(-2..2    ){if(&amp;b)      {&amp;e;;&amp;a(&amp;b,&amp;c(1)    );&amp;a(25-(&amp;b*2.0)    ,&amp;c(1));      &amp;a(1,&amp;c(-2.000))    ;}else      {for    (-6..6){      &amp;e;&amp;a(5,&amp;c(2.0))    ;;&amp;a((              &amp;d(0,&amp;b,6)?15:&amp;d(1,&amp;b,2)?&amp;b-1:    2)+(&amp;d(-1,&amp;b,2)?    ($_+2)*2:&amp;d(0,$_,2.0)?($_+2)*2              -1:0),    &amp;c(-1));&amp;a(&amp;d(1,&amp;b,3)?15-2.0*(    &amp;d(0      ,&amp;b,6)    ?15:&amp;d(1      ,&amp;b,2.0)?&amp;b-1:2)    :4,&amp;c(3));&amp;a(&amp;d(    0,&amp;b,3)?      3.0:0,&amp;c(-3.0));    &amp;a(&amp;d(0,&amp;b,3)?4:    0,&amp;c(3))      ;&amp;a(&amp;d(1,&amp;b,5)?0                                      :&amp;d(0,$_,2.0)?$_                        :&amp;d(0,$_      ,1)?$_+2:&amp;d(-1,&amp;b,3)?(&amp;b+2)*2+1:&amp;d(1,&amp;b,5)?15:&amp;d      (1,&amp;b,2)?&amp;b-1:2,&amp;c(-3));&amp;a(5,&amp;d(1,&amp;b,4)?&amp;c(1):&amp;d      (1,&amp;b,3)?&amp;c(0):&amp;c(2));&amp;e;&amp;a(5,&amp;d(1,&amp;b,1)?&amp;c(1.0)      :&amp;c(3));  &amp;c(-$a[$#a]);&amp;a(5.0,&amp;c(3));;&amp;a(1,&amp;c(        -3));}}}&lt;/pre&gt;
    </description>
</item>

        

<item>
    <title>Symbol Table Japh (liverpole)</title>
    <link>http://prlmnks.org/html/564261.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/564261.html</guid>

    <description>
        In &quot;Stages of a Perl Programmer&quot;, by Tom Christiansen, a &quot;Hacker&quot; (stage 5) is defined as someone who, among other things, &quot;&lt;i&gt;accesses the Perl symbol table directly&lt;/i&gt;&quot;.&lt;p&gt;Here is my attempt to do so, and without using any semi-colons:&lt;pre class=&quot;block_code&quot;&gt;                     {use B}                $a= -- $ |and map           {s|$_| sub { map{ m{^ $_[0]      (.{$a})}ix &amp;&amp; return lc $1 } keys%B::  }-&gt;(lc $_ )|e &amp;&amp; map { print $_ , $ &quot; } split      // and $ | and $a += $| --} split $ &quot;           ,&quot;.b .in ...._s u ..me v &quot;.                &quot;..ty ..pea cc c&quot;                     .&quot;he v&quot;&lt;/pre&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-465654&quot;&gt;&lt;hr /&gt;&lt;font size=&quot;1&quot;&gt;s&#39;&#39;(q.S:$/9=(T1&#39;;s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>Jolly Roger (SubStack)</title>
    <link>http://prlmnks.org/html/563923.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/563923.html</guid>

    <description>
        Yarr, the Jolly Roger has a message for all ye perl pirates.&lt;pre class=&quot;block_code&quot;&gt;#!           /usr/bin/perl           $^X =~ y/0-9.//d,          print join$&quot;,(sort         97.110.0.do{local $&quot;=        &quot;&quot;;       $_=       &quot;@{[        sort     split     //,$~        ] }&quot;     ;eval     &quot;;42;         y/$~/heotr/&quot;;s/(.)\1+          /\1/x;$_} , [split/          \//x,($_=   chr++$|+$=         /$]*$^F).$$_]-&gt;        [--   $.],      crypt    ($_      =pack      (&quot;I*&quot;,    1722938    ),$_)           =~/          .(..            ..)/x,&quot;#=6.!1&quot;            ^$~),  chr(8).         chr            $=/     $^F+                   ++$^F,#Sub                             Stack&lt;/pre&gt;Some words in the result might appear jumbled for for ye Windowers and ye Applers (and ye BSD-ers) because of differences in crypt() and $^X, but it&#39;s still a pirate!(Inspired by &lt;a href=&quot;http://www.perlmonks.org/index.pl?node_id=292135&quot;&gt;this&lt;/a&gt;)&lt;br /&gt;(Updated for ye Gentoo-ers.)&lt;br /&gt;Harr!
    </description>
</item>

        

<item>
    <title>Fun with code read &amp; print (Mandrake)</title>
    <link>http://prlmnks.org/html/563487.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/563487.html</guid>

    <description>
        An attempt to print the japh horizontally and vertically. Reads the code and prints the shape.&lt;br/&gt; The code is not much unreadable though.&lt;pre class=&quot;block_code&quot;&gt;#!/usr/bin/perl -wuse strict;(open O    ,$0)&amp;&amp;      (push my @r  ,_v (   [ map{_c(join(&quot;&quot;,@{$_})   ,1)} @{ _v    ([map{_c($_  ,1) }   &lt;O&gt;])}      ]));         push    @r,_v  ((((   $r [  -1]))   ))for(      0 ..        int(    rand (  (5)))  +1);  map {   map  {      map{        $_&amp;&amp;    print}  @ {$_  };;;  &amp;_p }   @{$_};      &amp;_p}        @r ;sub _p   {  print&quot;\n&quot; }  sub _c{my(  $o      ,@a,        $f,@r)=($_[1],  split(&quot;&quot;,$_  [0]),0);for  (      my$i        =0,$f=0;$i&lt; sc  (@a);$i+=$o  ){for($i..( $i      +$o)        ){($a[$_]&amp;&amp; $a  [$_]ne&quot; &quot;&amp;&amp;  $a[$_]ne&quot;\n&quot; )      &amp;&amp; (        $f=1    );( $_  ==($i        +$o))   &amp;&amp;   (      push        @r,(    $f== 1  )?&quot;@&quot;        :&quot; &quot;)   &amp;&amp; ($f      =0);        }  }    return  \@r;;        } sub   _v{my(      @r);        for(    @{$_[0  ]}  )        { for   my  $j   (0..           _m (    \@{ $_  [0]})        -1) {   push @   {$r[$j]},($_-&gt;[$j] &amp;&amp;$_-&gt;[$j]ne&quot;\n&quot;)?$_-&gt;[$j ] :&quot; &quot;;#;   }}return[map{\@{$_}}@r];};sub _m{my $l=0;($l&lt;sc(@ {$_      }))&amp;&amp; ($l=sc(@{$_}))for(@{$_[0]});return $l;}          sub sc{return scalar(@_)}#Mandrake#&lt;/pre&gt;Change the code to a different shape to find the shape on the output.Thanks..
    </description>
</item>

        

<item>
    <title>bigger japh (SubStack)</title>
    <link>http://prlmnks.org/html/563309.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/563309.html</guid>

    <description>
        This one recreates a 613 byte ascii-artish japh with 448 bytes of code and data.&lt;pre class=&quot;block_code&quot;&gt;$_=&quot;b4lb13ib24ib3lab4lblb3lb2gfebfdf2b5gf2iblgfgb2gfgb2fdf2blf2gbgf2gbigf2eab4lblb3lb2jb4lb8k2lblb2lblb3lb2lb3lb2lblk2iblabib2lblb3lb3jb3lb7lb2lblb2lblb3lb2lb3lb2lblb4labck2cb2jkhb2jkhb3ckhb5ck2lblb2lb2jkhb3ckhblb2lbck2ebla2b17clb7lb14labigf2gbgf2gbigf2eblb7lf2gbgf2ib2gfgblb2gbgf2gbigf2eablb3lblk2iblb5lb7lb2lb2k2lblb2cblkhb2lk2iblabljkgcbck2eblb4glgb6lb2lbck2lbck2eblbjb2ck2eblb2fgablb53hablb53a&quot;;s/(\D)(\d+)/$1x$2/eg&amp;y!a-z!\n &#39;+-/:\\_|!&amp;&amp;print&lt;/pre&gt;
    </description>
</item>

        

<item>
    <title>One line Fibonacci generator (jimt)</title>
    <link>http://prlmnks.org/html/561606.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/561606.html</guid>

    <description>
        I&#39;m stuck in the airport in Baltimore waiting for my flight home. Normal people read magazines or books or stare off blankly into space. Me? I write one-liners to generate the fibonacci sequence.&lt;pre class=&quot;block_code&quot;&gt;print$,and$_||=!$!and$\=$/and print and($,,$_)=($,+$_,2*$_+$,)while$;&lt;/pre&gt; 
    </description>
</item>

        

<item>
    <title>Getting from here to there (wulvrine)</title>
    <link>http://prlmnks.org/html/559801.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/559801.html</guid>

    <description>
        Having been amazed at all of the ASCII Obfuscations, I decided to try one for myself. &lt;p&gt;&lt;pre class=&quot;block_code&quot;&gt;@f=(22,52,0,13,5,1,160,2,2,125,53,3);@d=(15,17,19,21    );sub A{map{($a,$b,$c,@f)=@f;$o=!$c?$a+$b:$c==1?$a*$b:$c==2?    $a/$b:$a-$b;$j[$m++]=chr$o}@f}sub B{$g=pop;$c=$h{$g};$i=$r{$    g};$B=&#39;a&#39;;map{@{$i-&gt;{$_}} = reverse @{$i-&gt;{$_}} if $c-&gt;{$B++    }!=$i-&gt;{$_}[0]} qw/v V/}sub C{$g=pop;$c=$h{$g};$Z=$c-&gt;{a};$Y    =$c-&gt;{b};$S=$c-&gt;{c};$R=$c-&gt;{d};$s=abs$R-$Y&gt;abs$S-$Z;($Z,$Y,$    R,$S)=($Y,$Z,$S,$R)if$s;($S,$Z,$R,$Y)=($Z,$S,$Y,$R)if$Z&gt;$S;$    l=$S-$Z;$n=abs$R-$Y;$Q=0;$y=$Y;$P=($Y&lt;$R)?1:-1;;$O=-1; ;map{$    O++;$r{$g}-&gt;{v}[$O]=($s)?$y:$_;$r{$g}-&gt;{V}[$O]= ($s)?$_:$y;;$    Q+=$n;if(2*$Q&gt;=$l) {$y+=$P;$Q-=$l}}$Z..$S}sub D{($N,$k,$M,$L,    $K)=@_;map{$J=$L==$d[$_]}0..$K-1if($K&amp;&amp;$M==12);$J||print&quot;\e[&quot;    .&quot;$M;${L}H\e[${k}m$N\e[m&quot;;}$|=print &quot;\e[H\e[J&quot;;A;map {$*=int     rand 50;$,=int rand 24;$h{$j[$_]}={};$&quot;=$h{$j[$_]};$&quot;-&gt;{a}=$    *;$&quot;-&gt;{b}=$,;$&quot;-&gt;{k}=101+$_;$&quot;-&gt;{c}=$d[$_];$&quot;-&gt;{d}=12;;$&quot;-&gt;{I    }=$j[$_]}0..3;map{C$j[$_];;B$j[$_]}(0..$#j);@q=@{$r{$j[0]}-&gt;    {v}};@u=@{$r{$j[0]}-&gt;{V}};;map{$H=$h{$j[$_]};@q=@{$r{$j[$_]}-&gt;{v}};;@u= @{$r{$j[$_]}-&gt; {V}};$F=$_;;map {D&quot; &quot;,0,$H-&gt;{b},$H-&gt;{a},$F;$H-&gt;{a}=$q[$_];;$H-&gt;{b}=$u[$_];D$H-&gt;{I},$H-&gt;{k},$H-&gt;{b},$H-&gt;{a}, $F;select$G,$G,$G,.05}0..$#q;$_=$F}0..$#j;print &quot;\e[30;1H&quot; #by wulvrine&lt;/pre&gt;&lt;p&gt;I look forward to the comments and suggestions but please be gentle as this is my first &#39;real&#39; obfuscation.  &lt;br&gt;(My first obfu was my signature which doesn&#39;t really count.)&lt;p&gt;I am using this &lt; a href =&quot;http://en.wikipedia.org/wiki/Bresenham&#39;s_line_algorithm&quot;&gt;algorithm &lt;/a&gt; for movement.  &lt;p&gt;&lt;!-- Node text goes above. Div tags should contain sig only --&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-520917&quot;&gt;s&amp;&amp;VALKYRIE &amp;&amp;&amp; print $_^q|!4 =+;&#39; *|&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>Unbalanced, Introspective Japh (liverpole)</title>
    <link>http://prlmnks.org/html/558718.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/558718.html</guid>

    <description>
        &quot;Unbalanced&quot; because of the unmatched parentheses, braces, and brackets.&amp;nbsp;&amp;nbsp;&quot;Introspective&quot; because ... well, you&#39;ll have to figure that out for yourself.&lt;p&gt;This works with Perl version 5.8.6 (in Linux), and 5.8.7 (in Windows), and possibly with other versions of Perl (though I can&#39;t be sure).&lt;p&gt;My apologies if this has been done before (and please let me know if so).&amp;nbsp;&amp;nbsp;I came up with the idea just this evening, but one can never be sure whether or not similar prior art exists.&lt;pre class=&quot;block_code&quot;&gt;( $ ||=  open$ ) ,$ ^X) ;; X :;{ $ ;+=  print if ($_ = lc getc $))  eq# }( split$ ,,q#- just another perl hacker# )[ $ ;];  eof$  ( ?die$ /: redo } 060630# ]&lt;/pre&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-465654&quot;&gt;&lt;hr /&gt;&lt;font size=&quot;1&quot;&gt;s&#39;&#39;(q.S:$/9=(T1&#39;;s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>I can (sh1tn)</title>
    <link>http://prlmnks.org/html/558704.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/558704.html</guid>

    <description>
        &lt;pre class=&quot;block_code&quot;&gt;use strict;use warnings;I-&gt;can(print&quot;Just Another Perl Hacker&quot;)&lt;/pre&gt;&lt;!-- Node text goes above. Div tags should contain sig only --&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-416961&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>Perl Worst Practices (Hue-Bond)</title>
    <link>http://prlmnks.org/html/556329.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/556329.html</guid>

    <description>
        &lt;p&gt;My [id://547911|last obfuscation] was impressive on first sight, but rather disappointing at the time of breaking it, until the point that I almost posted a followup apologizing for it :^). So I decided to quit doing that lame things and make something I could be proud of. And this is the result, a little program that incorporates some tens of gotchas (to me, at least) that I&#39;ve found in the documentation. They&#39;re not necessarily &lt;i&gt;worst&lt;/i&gt; practices, but I thought it would be a nice title. Sometimes titles are more difficult that the things they give name to.&lt;/p&gt;&lt;p&gt;It changes its behaviour from time to time (maybe), although it can be some weeks until it decides to do so. I won&#39;t be surprised if it doesn&#39;t run on win* or older Perls (5.8 required, although the script doesn&#39;t explicitly &lt;tt&gt;use&lt;/tt&gt; it), indeed I had to remove a couple of features to make it work on 5.8.7. A pity. On the bright side, and definitely not a worst practice, it&#39;s &lt;tt&gt;strict&lt;/tt&gt; and &lt;tt&gt;warnings&lt;/tt&gt; clean -- there&#39;s a warning but it&#39;s on purpose ;^).&lt;/p&gt;&lt;p&gt;It&#39;s possible that it runs too slowly on your machine; if that happens, you can alter the variable &lt;tt&gt;$d&lt;/tt&gt; at the top of the script. It specifies a wait time, so increasing it will make the program run slower (although it&#39;s unlikely you will need this). Setting it to zero will make it run as fast as possible. If it&#39;s slow, you could try 15 as a first approach, and see. I forgot to check for the less-than-zero condition, but it doesn&#39;t seem to break.&lt;/p&gt;&lt;p&gt;Oh, and it also features a small hidden text that summarizes my overall opinion about the monastery.&lt;/p&gt;&lt;p&gt;Usage:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-m: use medium-sized font&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-s: use small font (default, and overrides -m so it&#39;s pretty useless)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-t: specify text to show instead of the default (there&#39;s another way to do this)&lt;br&gt;&lt;/p&gt;&lt;p&gt;Example: ./pwp.pl -mt &#39;100th post!&#39;&lt;/p&gt;&lt;p&gt;&lt;small&gt;(Hmm, I have a feeling I&#39;m forgetting something...)&lt;/small&gt;&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;use warnings; use strict; our $d = 20;* ,= *EUID;-JAPH=~join&#39;\s*&#39;,(&#39;(\S+)&#39;)x4;use Getopt::Std;getopts(&#39;smt:&#39;,\ %;);$^]=v109 if$; {m}and!$;{s} ;%~=$ ^]eq&#39;s&#39;?(q AoA,6,q NaN,11):reverse(14,q rar,7,q pop);eval join&#39;&#39;,map{$^[=chr qw/26 6 10 7 0/[$_]+0105;$_||($^[x=2);$/ = $_==3?&#39;use Symbol; &#39;:&#39;&#39;;local$ ;=chr qw/6 1 0 5 3/[$_]+77;$ a=$ _==3?&#39;;${*alt=*{$q=gensym}} &#39;:&#39;&#39;;$ S::I=$_==1?&#39;our$X;our$ s=($X=~$q);&#39;:&#39; &#39;;$S::S=(qw|qr/$q/\$s sub{$$q;} \*alt $q|)[$_];&quot;package $^[;${/}sub $; {our\$k=shift;our\$q$a=shift;${S::I}bless $S::S,\$k;}&quot;;}0..4;$/=( );our($ORS,%I,$I,%~,$OFS,$RS,%a,$~,$l);sub I;sub v;sub ::{$5}if(open$/,&#39;&lt;&#39;,\$RS){while(read$/,$_,$=){$,=$_;nextunless ${*${P E R L M O N K S  __ v46}{&quot;&gt;|z&lt;|2&quot;^&quot;m?;p=`&quot;}}-&gt;();//and($I,$ ~)=$ ^]eq&#39;s&#39;?($l,$.):($:,$^);$I{255-$I^0x55}=$ ~;}(*.,*^,*l,*:)=(*&quot;,*;,*=,*b);$a{ a}=&#39;$~=join&quot;&quot;,@ ~&#39;;our@RS;sub a{local$_=(caller(fileno$/==0))[3];&amp;u;v36.$_}@RS=sort{sub b{local$/;@; =join&#39; &#39;,$ ^X=&gt;&#39;-e&quot;print\&#39;&#39;=&gt;@_,&#39;\&#39;;&quot;|&#39;;eval for&lt;&gt;}@~= map{pack&quot;B8&quot;,$ _}grep!/^0{3}/&amp;&amp;!/^1/,map{unpack&quot;B*&quot;,$ _}split//,defined$;{t}?$ ;{t}:defined$ a{&amp;::}&amp;&amp;CORE::length($ a{&amp; ::})?$a{&amp; ::}:&#39;&#39;;@ ~=split//,q^Z&amp;q&gt;^^&lt;0G\x01V&gt; ^join&lt;  &gt;=&gt; map{y ^1-9^ --^=&gt;s ^[0-9]^chr^e; $ _}split qr^^,unpack&lt;b{}4&gt;,chr rand 16if!@~;$l+=ord for@ ~;return$l%2?-1:1}@RS[0177,0377]if* K::X;$I=((b a),());open$I,&#39;&lt;&#39;=&gt;\3or die-OPEN1.$!;eval&#39;&quot;BEGIN{use English}&quot;&#39;;*^]=-+CORE&#39;GLOBAL&#39;undef;$a{a}=&#39;sub BEGIN{sub CORE::length{(undef,local$_)=@_;index$_,&quot;&quot;=&gt;$l*$l}}&#39;;{package S;our@l;@l[split//,hex join&#39;&#39;,&#39;b&#39;..&#39;d&#39;]=([0,-1],[1,fileno((bless\($ .=rand )=&gt;--$-),$/)==0],[-1,0],[0,1]);*l=*l=sub{splice@_,6,0=&gt; splice@_,0,1;our@I=(shift,shift);()=return wantarray?():bless{mnm=&gt;[@I],mmn=&gt;$I[1]-1,mww=&gt;0,mmw=&gt;$I[0]-1,mwn=&gt;0,mwm=&gt;shift,mnw=&gt;shift,mmm=&gt;[shift,shift],},shift;sub END{$OFS-&gt;Tgoto(&#39;cm&#39;,0,0,*~);$OFS-&gt;Tputs(&#39;ve&#39;,1,*~);}}}our@I;b a;our@a;$ ^]=$ _ and((splice@a,($|,1,!!!$ORS)[$a++||$|],$|,0)or map{$_+=$^]}@a)or@a=map{sprintf$6,$_/$_,$_,$_,$_,$_*$_}@a for qw/10 55 46 0/;@ :=greplength,split/(??{local($ ,,$^)=((index+($.=&quot;.&quot;),&quot;&quot;,42),substr$_,pos,1);$_ eq$^and substr$.,0,$,,&quot;&quot;and last for@a;substr$.,0,$,,&quot;&quot;;})/,&#39;UE.0.ogcnoVesZeXMh&#39;;*ORS =*|;map{push@ / ,($/[-1]|| 0)-112+ord}split//,&#39;pzw&#39;;$ _= * ^]^ 8.49.48x48.48.55;@ ^[=(split//)[@ /];$^[[$ _*2+1]=$ ^[[$_*2]=$^[[$_]for reverse 0..2;splice@I,6+@ I,0,qw/O O 0 0 @/,not do{push@I,(localtime)[8]?@ : :@ ^[}=&gt;&#39;@&#39;;{local$/;@/=($~{q LoL} *+CORE-&gt;length($~),$ ~{q yay});$,=S-&gt;l(@/,ref\$ .,4,-1,ref\$.);$ ^]=S-&gt;l(@/,&lt;$I&gt;=&gt;eval&#39;$ORS ++;2&#39;,$/[ref\$.]-1,$/[1]);$a{a}=&#39;@RS=();splice@RS,@RS,0=&gt;int rand 2for split/&#39;.&#39;/,$~;&#39;;}@/=();our@OFS;$d/=1e3;sub END{for$^[(\@/,\@OFS){select+(),((),()),(),5e-1 if$^[==\@OFS;for($.=our$I=ref\$.;eval&#39;$I++if!$ ^[-&gt;[$.]&#39;||$ORS;$. ++){$ ^=$^[==\@/?@I:-1;if(-rand 1==rand -1){$ .=&quot;0+(/SDLF?.2:EFLSE?:&lt;GOSD,22&#39;FHBS/,-#FASD#/4=FAS&amp;9/*SDFL!&lt; /LHA&#39;!gUyA3&quot;.&quot;Bf&#39;HAS5#/,HABV&#39;0#81SD&quot;;BEGIN{(*b,*I,*;,*^],*RS,*a)=\(&#39;&amp;Ut&#39;^&#39;h4:&#39;,@{[&#39;^&#39;^&#39;~&#39;]},&#39;~xyv0]_PR{.LRRjxDDO&#39;^&#39;&lt;=&gt;?~&amp;*#7[z) ?M;%42&#39;,&#39;s&#39;,@{[0..255]},%ENV)}our$,=&quot;s&quot;.&quot;DFH!%83SOFS*(?rOfUI`96dFGASf:&#39;2LDHGf snujfdla&amp;HUFA6(?lBSDJl8 SIF_1 E&#39;F^&#39;4&quot;.&quot;sAQFI,a.9SDFJHlN&quot;;warn&quot;\n&quot;x$~{q dad}.($ .^$,);BEGIN{sub RS{I sub{$OFS-&gt;Tputs(&#39;vi&#39;,1,* ~)};shift-&gt;();}(*,,*.,*EUID,*:)=(5,1,*K::X,4)}BEGIN{*~=$::{&quot;{&gt;b&lt;h/&quot;^&quot;(j&amp;s={&quot;},*u=sub{s/.*:{2}//}}goto+v73}else{$: and do{for($ .-(@I-1)..$ .){$^+=$ ^[==\ @ /?-(1):1;BEGIN{sub CORE::length{return CORE::length(@_)}}do{print&quot;by Hue-Bond\n&quot;if oct ref${ P E R L M O N K }&gt;&lt; &gt;or/(??{substr$ \,2+pos,1})/}unless$ :!~/n(?{m#(?{$_})#&amp;&amp;sprintf q#\# %02x#,ref\$..q#@ OFS##&amp;&amp;$ substr{42}})An#&quot;@{[defined$I&amp;&amp;length$I&amp;&amp;(sprintf$I.(&quot;6611&quot;^&quot;bg|a&quot;)||do{&amp;u(q&quot;$I/x;print{$OFS-&gt;Tgoto(&#39;cm&#39;,$^[-&gt;[$_][0]=&gt;$^[-&gt;[$_][1],*~),*~}$I[$^ ]if((defined$ ^[-&gt;[$_]&amp;&amp;$ _&gt;=ref\ $.)&amp;&amp;($RS[$^[ -&gt;[$_][--$ -]/$ ~{q HoH}]?(not hex substr($ I{ordsubstr$~,int($^[-&gt;[$_][--$-]/$~{q bob})=&gt;1},2 *$^[-&gt; [$_][1],2)&amp;1 &lt;&lt;$~{q mom}-1-$^[-&gt;[$_][--$-]%$ ~{q LoL}):(hex substr($I{ord substr$ ~,int($ ^[-&gt;[$_][--$ -]/$~{q pop} )=&gt;1},2*$^[-&gt;[$_][1],2) &amp;1 &lt;&lt;$~{q AoA}-1-$^[ -&gt;[$_][--$-]%$~{qHoH})));}select +(),(),((),()),$d;eval &#39;&quot;BEGIN{* CORE::GLOBAL::open=sub{\ $_=q^?n/j_pp!|m5|meF*I,SnpI{^^q ^|!}/eJ7m3/t0W_)Z,B{./`@^^eval}}&quot;&#39;;}or do{$^[==\@/and print * ^]^qq&#39; ~,= &lt;\cv\cz\ci-\cab29JJ\cz\c\\cpE\cheeded.\n&#39;;last}}lastif$I==@ I-1;}}I:}BEGIN{(*l,*ORS,*^)=(split//,0552);sub I{v sub{$OFS-&gt;Trequire(qw/cl cm ve vi/)};shift-&gt;();}* ORS=\ (&#39;%3$*&#39;. * 1{&#39;p$0?&#39;^&#39;&gt;e}z&#39; }.&#39;$.*c&#39;) }{package S;our@l;sub I{our$I=$_[our$ S=0];I: our$ww=$I-&gt;{mmm}[0]+$l[$I-&gt;{mwm}][0];our$wn=$I-&gt;{ mmm}[1]+$l[$I-&gt;{mwm}][1];$ .= ((our@I=0..3)=&gt;&#39;&#39;);our$ l=join&#39; els&#39;,map{our($j,@t,$t)=unpack&quot;b2&quot;,$_;&quot;if(\$I-&gt;{mwm}==@{[(&#39;ref\$.&#39;,1..$#I)[$_]]}){if(\$w@{[((qw/w n/)x2)[$_]=&gt;$::I[0],((v62)x2=&gt;(v60)x2)[$_]]}\$I-&gt;{&#39;m@{[((v109)x2=&gt;(v119)x2)[$_],((qw/w n/)x2)[$_]]}&#39;}){return undef\$ I-&gt;{mmm}if\$S;if(\$I-&gt;{mnw}==4){\$ I-&gt;{&#39;m@{[((&#39;m&#39;)x2=&gt;(v119)x2)[-1+$ _]=&gt;((qw/n w/)x2)[$_]]}&#39;}@{[@ t=split//,$ j and(0+$ t[0] ^0 +$t[1])?&#39;--&#39;:&#39;++&#39;]};\$I-&gt;{mwm} = $I[-3+$_]}elsif(\$ I-&gt; {mnw }==2){\$I-&gt;{&#39;m@{ [((&#39;w&#39;)x2=&gt;(v109)x2)[- 1+$_]=&gt;((qw/n w/)x2)[$_ ]]}&#39;}@{[$ t=$ j and(0+substr($t,0,1) ^0+substr($t,1,1))?&#39;++&#39;:&#39;--&#39;]};\$I-&gt;{mwm}=$ I[-2+$ I[-3+$_]]}else{\$ K::X=int qq&#39;${*_{qq^&gt;|z&lt;|`^^ qq^m?;p=2^}}&#39;}\$ S ++;goto I}}&quot;;}@I;defined eval&quot;$l;1&quot;and$I-&gt;{mmm}=[$ ww,$wn]or return;!!$l}}BEGIN{* ,=\(&#39;#d4k!k#f &#39;^&#39;s!f\&#39;l$m-s&#39;) ;*;=\@ARGV;sub v{$OFS=Term&#39;Cap -&gt;Tgetent({&quot;h=l,&quot;^&quot;&lt;x&gt;a&quot; =&gt;${\undef},&quot;k#x}; &quot;^&#39;$p(8~d&#39;=&gt;$ .});shift-&gt;();}}while($,-&gt; I&amp;&amp;$ ^]-&gt;I){eval&#39;package S&#39;;splice@ /,@/, 0,$,-&gt;{mmm}||&lt;$I&gt;;splice@ OFS,0,fileno$ /== 0=&gt;$^]-&gt;{mmm} ||();eval&#39;package main;&#39;;}b a;require POSIX;$ .=new POSIX::Termios;$.-&gt;getattr;$.=$ .-&gt;getospeed;eval&quot;$^&quot;;RS sub{$OFS-&gt;Tputs(&#39;cl&#39;,1,* ~)};package S;}else{die-OPEN2.$!}BEGIN{$RS=&lt;&lt;&quot;EOF&quot;0004040404040404040400 004242424242424242423c000000 214 2550018040404030404041800 003c42422418244242423c000000 215 1460001010202040808101000 004040404040404040407e000000 133 2300000000e101010100e0000 000000003a44444438205c423c00 201 2050010080404040404081000 001010107c10101010120c000000 131 222000e080808080808080e00 0018244242424242422418000000 241 1540000000000000004040408 000000003c42023e42423e000000 134 20300001212121212120c0000 007e404040784040404040000000 255 2360006080808300808080600 0000000042422418244242000000 209 2100000140814000000000000 003c424242463a02424438000000 128 1470000000404000004040408 4040202010101008080404020200 145 246001c040404040404040000 000000007e04081010207e000000 198 20800001f0404040404040000 000808001808080808083e000000 254 19500001f10101e01110e0000 004266665a5a4242424242000000 159 23100000e04040404040e0000 0018244242427e42424242000000 227 2350000000e121212160a021c 003c4242424242724a463c040200 205 25100000012121212160a0000 001824242418324a444c32000000 223 140000000001f001f00000000 0000000022222a2a2a2a14000000 151 22100001212121e1212120000 0042426262524a46464242000000 226 228001010141a121212120000 000e040404040404444438000000 194 22400001c12121c1010100000 0000000000000000000000007e00 250 245000a0a0a00000000000000 003c424204080808000808000000 136 1490000000c020e12160a0000 007f080808080808080808000000 203 2540010101214181412110000 000000003c42427e40423c000000 193 2070000001115151f0a0a0000 0204080810101010100808040200 221 1300000000019260000000000 001c2040405c624242423c000000 212 15600000e0404040404040438 1e10101010101010101010101e00 224 24100000e12202022120e0000 000000005c62424242625c404000 237 2180000000000000000000000 2010080804040404040808102000 213 1310000111b1b151511110000 3c04040404040404040404043c00 231 247000000121212120c0c0000 000000003a46424242463a020200 220 21900000c0c12121e12120000 001414143e14143e141414000000 235 13700000c12212121120c0603 007c424242427c48444242000000 251 24800001c222e2a2f201e0000 000000000000000000081c080000 234 132001010141a1212121c0000 007e02040808102020407e000000 200 2400000000204080402000000 003c424240300c0242423c000000 150 24900000e11111111110e0000 003c424240404e4242463a000000 154 2370000001a15151515150000 0000000000000000000000000000 199 2130000000000000000003f00 0000000000003e00000000000000 245 13500001010101010101e0000 3008080808080408080808083000 230 2150000000808000008080000 000000081c080000081c08000000 144 14400001c12121c12121c0000 000000005c624240404040000000 232 216000004040a0a1111000000 1824420000000000000000000000 244 244000000110a04040a110000 004040405c62424242625c000000 210 20000000e11010608101f0000 000818280808080808083e000000 152 1550004001c04040404040438 007e020404080810102020000000 192 157001c040404040404041c00 0000020408102010080402000000 247 1500000000000000008080000 000000003c42424242423c000000 132 19700001e10101c1010100000 000202023a46424242463a000000 236 20600000000001f0000000000 0000000000000000000000000000 135 1380000112a14040a15220000 0202040408080810102020404000 143 1330000040c14040404040000 00324a4c3808101c32524c000000 155 1430000121a1a161612120000 00000000342a2a2a2a2a22000000 228 1990000080808080008080000 007e40407c42020242423c000000 139 1590000001008040810000000 000000082a1c081c2a0800000000 148 1280000081e08080808060000 00040c14142424447e0404000000 222 15800081e28281c0a0a3c0800 1008040000000000000000000000 142 20200000e11110e11110e0000 0022222214140808080808000000 146 24300000c120c0d12120d0000 0000201008040204081020000000 140 1480000111515151f0a0a0000 000000003c42404040423c000000 253 20100000e11010601110e0000 003e08080808080808083e000000 153 2270000141436143614140000 0000000018180000180808100000 137 1450000001e020408101e0000 0042424242242424181818000000 208 2520000060a0a121f02020000 00083c4a4a281c0a4a4a3c080000 158 142000000141a121212120000 0000000022222214140808000000 196 22000000e11110f01110e0000 000000005c624242424242000000 147 196000011110a040404040000 003c42424242424242423c000000 243 22900001c12121c1412120000 0000000042424242463a02423c00 248 2110000001212120c0c081010 001808080808080808083e000000 211 1980000111214181412110000 0008080808080808000808000000 225 13900000e1101060004040000 20524a0400000000000000000000 149 2120000000000000000000000 000c1210107c1010101010000000 138 2040000000e101806021c0000 0000000000000000001808081000 217 134000012120c0c0c12120000 004040405c624242424242000000 242 1940804000000000000000000 007e40404078404040407e000000 202 23900001e02040c08101e0000 003c42420204040810207e000000 240 1520007081e08080808080000 000000007e00007e000000000000 204 1510000000c121212120c0000 003c42424040404042423c000000 197 2330000000c121e10100e0000 0078444242424242424478000000 207 2380002040808080808040200 002222222222222a2a2a14000000 130 25300001f0102040408080000 007e0204081c020242423c000000 157 15300000e12202020100e0000 0000000808083e08080800000000 233 1290000000b0d080808080000 0078444244784442424478000000 216 23200001e10101c10101e0000 000000003c42201804423c000000 239 2170000121212120c0c0c0000 000000004242424242463a000000 252 2230002020e121212160a0000 0042444850605048444242000000 206 22500001c12111111121c0000 0002020006020202020222221c00 238 1920004040400000000000000 1414141400000000000000000000 141 1360004001c04040404040000 0608080808081008080808080600 195 209000000141a1212121c1010 0808080808080808080808080800 218 21400000004041f0404000000 007c424242427c40404040000000 129 25000000e10100c02021c0000 0042422424181824244242000000 249 2420010100808040202010100 0808080800000000000000000000 246 14100000e11101e11110e0000 0040404044485070484442000000 156 19300000c12212121120c0000 00424242427e4242424242000000 229 2260000000e121212160a0202 001c224e525252524e201e000000 219 234EOF}&lt;/pre&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-489671&quot;&gt;&lt;p&gt;-- &lt;br /&gt;David Serrano&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>A first attempt (fatalserpent)</title>
    <link>http://prlmnks.org/html/556059.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/556059.html</guid>

    <description>
        I made this code to amuse myself, and didn&#39;t feel like rewriting it, so I apologize for the arrogance it says when executed... I know it&#39;s not too good, but I wrote it after _just_ learning the basics of the language... so yeah sorry... I&#39;m really not that egotistical... not that anyone would want to copy it, or that I really have any claim to copyright, but it&#39;s in the public domain&lt;pre class=&quot;block_code&quot;&gt;$a=116.110.101;$b=112.114.101;$c=115.108.97;$d=116.097.102;$g=32.00.00;reverse($a);reverse($b);reverse($c);reverse($d);$e=$a.$b.$c.$d;$e=reverse($e);print$e.$g;@z=split(//,$e);$f=119.121.111.117;@n=split(//,$f);print$z8.$n[0].$z10.z5.$g.$n1.$n2.$n3.&quot;\n&quot;; print&quot;A PD work.\n&quot;;&lt;/pre&gt;
    </description>
</item>

        

<item>
    <title>A first attempt (Anonymous Monk)</title>
    <link>http://prlmnks.org/html/556057.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/556057.html</guid>

    <description>
        #Uhh this is just a (really bad) first attempt at trying to learn perl... Any CONSTRUCTIVE criticism would be aprecciated.$a=116.110.101;$b=112.114.101;$c=115.108.97;$d=116.097.102; $g=32.00.00;reverse($a);reverse($b);reverse($c);reverse($d); $e=$a.$b.$c.$d;$e=reverse($e);print$e.$g;@z=split(//,$e); $f=119.121.111.117;@n=split(//,$f);print$z8.$n&lt;a href=&quot;/out/node/0&quot;&gt;0&lt;/a&gt;.$z10 .$z5.$g.$n1.$n2.$n3.&quot;\n&quot;; print&quot;SRY 4 ego\n&quot;;
    </description>
</item>

        

<item>
    <title>Balls! Pt 4 (teamster_jr)</title>
    <link>http://prlmnks.org/html/555043.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/555043.html</guid>

    <description>
        part 4 or an occasional series: ([339774|1],[342916|2],[550028|3])&lt;br&gt;&lt;pre class=&quot;block_code&quot;&gt;          $_=&#39;map($            ..=pack(&quot;C&quot;,--$              _),@_=unpack&quot;C*&quot;,            q^pqfo!g        -#?p/cnq#&lt;qsjou!g!qb      dl#b3W:y31Dy4D2       127#-CN-29429-1-2189-5    1-251-241-63539:-          1-29311-366-279&lt;%v&gt;qbd   l#y29311#&lt;%q&gt;5+bubo3      )2-2*&lt;gps)1//31111*|%s  &gt;%`+%q02911&lt;nbq!|%i&gt;fy     q))%s,%`0:*0:*0:&lt;%y&gt;)2  0)%i,20%i**+dpt%s&lt;%z&gt;)     20)%i,20%i**+tjo%s&lt;w   fd)%v-jou)81+)2,%y,%z*       ,251+)21,jou)26,91    +%i++30)2,%i++3*,51+)%            z.%y****-9*&gt;)%q      03,%s*&amp;)3+%q*?%q@3;2             ~1//26~qs          jou!g%v^),eval$.&#39;                                  ;s#\s##g;eval                                    &lt;/pre&gt;&lt;Br&gt;this generates a file called o.bmp.&lt;br&gt;enjoy.&lt;br&gt;alex&lt;spoiler&gt;it&#39;s very loosly on [http://www.clowder.net/hop/Riemann/Sprsphrs.jpeg|this MC Escher print], [http://www.clowder.net/hop/Riemann/Riemann.html|this page] explains some of the maths.&lt;/spoiler&gt;
    </description>
</item>

        

<item>
    <title>Playfair Decryption (liverpole)</title>
    <link>http://prlmnks.org/html/554648.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/554648.html</guid>

    <description>
        My good friend [chargrill] recently posted &lt;a href=&quot;?node_id=554404&quot;&gt;this excellent obfuscation&lt;/a&gt;, demonstrating a famous method of encryption called the &quot;Playfair Cipher&quot;.&lt;p&gt;I thought it would be fun to write an obfuscated &quot;Playfair decryption&quot;, and since today is my one-year anniversary at Perlmonks, I thought it would be fun to submit it by the end of today.&amp;nbsp;&amp;nbsp;(Just barely made it!)&lt;p&gt;It should work under both Windows and Linux.&amp;nbsp;&amp;nbsp;The 3 parameters it takes (which can be &quot;hardwired&quot; at the top of the script) are:&lt;ol&gt;&lt;li&gt;The delay factor, in fractions of a second.&amp;nbsp;&amp;nbsp;This defaults to no delay at all (which is fast, but less fun to watch).&amp;nbsp;&amp;nbsp;A suggested value is between 0.01 (quite fast) to 1.0 (very slow)&lt;li&gt;The &quot;key&quot;, used to populate the table.&amp;nbsp;&amp;nbsp;(It defaults to the value used in [chargrill]&#39;s original obfuscation).&lt;li&gt;The encrypted text (which also defaults to the original obfuscation).&lt;/ol&gt;&lt;pre class=&quot;block_code&quot;&gt;$d = shift;$t = shift || &quot;ocumentsadigjrkplhxbfqvwy&quot;;$e = shift || &quot;slobxtfqnrgmpfbukgadarsotxdvaweoaggoodmgfbngnidculipvcmdtnmrasbuopjagqgnmktxnkjknxvjehasgncspntopfbugabutubueomrnjsfoddcnkdpqexsgxudvxmdsancdohedlmdjaslodraocqpminbxtfqnrxmpuxicecndkslomdunosloupfbugabudculipvcmbodmgfbsaxngknuqpcdlamkangjxrlxnjtadcdnnonjtibcbcaldcjadapisludrolhudehasgncspntopfbuxrtnxrslmkeckmucoxbchwgjodmkoupfbujavddcuaslodpisjcdbulhdwwngkjnslsjhagjipopmttsbqxskamkncxkmdjdpiuosloykmvcodeqdttxvdjnsjdkonjarolhudehasgncspntopfbujaneudinaqmirygnpjal&quot;; $a=eval{require Win32::Console::ANSI }? 30: 100; $p= {map {$_ ,[ int $k/5,$ k%5,$ k++]} split //, uc$t}; $P= { map{@_=@{$p -&gt;{ $_} } ;$_[0 ].$_ [1 ] =&gt;$ _ } keys %$p }; sub w($){ (4+ pop )%5} p ( &quot;\e[4;7;32m\e[2J&quot;) ;sub p{printf @_}sub P{select $A,$A,$A,$d if$d}sub c{my($c,$t,$f,$x,$y)=@_ ;if ($f){$x =3*$x+2 ;$y =3*$y+2;map{$q=$_;map{(2 ==$ q&amp;&amp;2 ==$_)or c($c,&#39; &#39;,0,$x+$_ ,$y+$q)}(-1..1)}(- 1..1)}$d&amp;&amp;p&quot;\e[%d;%dH\e[4;%dm$t&quot;,$x,$y,$c+$a}map c(6,$_,1,@{$$p{$_}} ),keys% $p;p&quot;\e[17H\e[%dm&quot;,$ a+5;p&quot;$e\e[17H\e[s&quot; ;P; sub l{( $u,$ v) =split// ,pop;($u,$U) =@{$ $p{$u }};($ v,$ V)=@ {$$p{$v}} ;$ h =sub {($ J,$ C,$N )=@ _;c($J,$P-&gt;{$C.$N},1, $C,$N)};($w,$W,$z,$Z)=($u==$v)?($u,w$U,$v,w$V):( $U==$V)?(w$u,$U,w$v,$V):($u,$V,$v,$U);$h-&gt;(1,$u, $U);$h-&gt;(2,$v,$V);P;$h-&gt;(6,$u,$U);$h-&gt;(6,$v,$V); $h-&gt;(1,$w,$W);$h-&gt;(2,$z,$Z);P;$h-&gt;(6,$w,$W);$h-&gt; (6,$z,$Z);p&quot;\e[u\e[%dm%s\e[s&quot;,$a+3,$P-&gt;{$w.$W}.$ P-&gt;{$z.$Z}}{l(uc substr($e,0,2,&quot;&quot;)or last),redo}&lt;/pre&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-465654&quot;&gt;&lt;hr /&gt;&lt;font size=&quot;1&quot;&gt;s&#39;&#39;(q.S:$/9=(T1&#39;;s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>Playfair cipher (chargrill)</title>
    <link>http://prlmnks.org/html/554404.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/554404.html</guid>

    <description>
        &lt;p&gt;A slightly less simple obfuscation for a slightly less simple substitution cipher. My next stop in old forgotten encryption ciphers is the Playfair cipher. This is a slightly more obfuscated encryption cipher than my last one - In case you haven&#39;t noticed, I&#39;m increasing the obfuscation level as the encryption algorithm increases. This either takes a file as a parameter to encrypt in playfair, or provided no input encrypts it&#39;s __DATA__.&lt;/p&gt;&lt;p&gt;Description borrowed from [href://http://en.wikipedia.org/wiki/Playfair_cipher|Wikipedia]:&lt;/p&gt;&lt;p&gt;The Playfair cipher uses a 5 by 5 table containing a key word or phrase. Memorization of the keyword and 4 simple rules was all that was required to create the 5 by 5 table and use the cipher.&lt;/p&gt;&lt;p&gt;To generate the key table, one would first fill in the spaces in the table with the letters of the keyword (dropping any duplicate letters), then fill the remaining spaces with the rest of the letters of the alphabet in order (usually omitting &quot;Q&quot; to reduce the alphabet to fit, other versions put both &quot;I&quot; and &quot;J&quot; in the same space). The key can be written in the top rows of the table, from left to right, or in some other pattern, such as a spiral beginning in the upper-left-hand corner and ending in the center. The keyword together with the conventions for filling in the 5 by 5 table constitute the cipher key.To encrypt a message, one would break the message into groups of 2 letters (&quot;HelloWorld&quot; becomes &quot;HE LL OW OR LD&quot;), and map them out on the key table. We imagine simple rectangles between sets of letters. Then apply the following 4 rules, in order, to each pair of letters in the plaintext:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;If both letters are the same (or only one letter is left), add an &quot;X&quot; after the first letter. Encrypt the new pair and continue. Some variants of Playfair use &quot;Q&quot; instead of &quot;X&quot;, but any uncommon monograph will do.&lt;li&gt;If the letters appear on the same row of your table, replace them with the letters to their immediate right respectively (wrapping around to the left side of the row if a letter in the original pair was on the right side of the row).&lt;li&gt;If the letters appear on the same column of your table, replace them with the letters immediately below respectively (wrapping around to the top side of the column if a letter in the original pair was on the bottom side of the column).&lt;li&gt;If the letters are not on the same row or column, replace them with the letters on the same row respectively but at the other pair of corners of the rectangle defined by the original pair. The order is important - the first encrypted letter of the pair is the one that lies on the same row as the first plaintext letter.&lt;/ul&gt;&lt;p&gt;To decrypt, use the inverse of these 4 rules (dropping any extra &quot;X&quot;s (or &quot;Q&quot;s) that don&#39;t make sense in the final message when you finish).&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;$_=q|P&quot;\e[2J\n&quot;;SQw{my$s;select$s,$s,$s,H}SQc{P&quot;\e[12;1f\n&quot;}($_=pop)?open+DATA,$_:$@;$k=N&quot;&quot;,MQuc,grep/[a-z]/,M$.{$_}++or$_,$0=~/\w/g;@s=($k=~/./g,grep/[^J$k]/,(A..Z));@Z=@s;F$r(0..4){$t[$r][$_]=H@sQFQ0..4}$t.=N&quot;&quot;,grep/[A-Z]/,MQuc,/./gQF             &lt;DATA             &gt;;$_=             $t;s/             (\w)\1/$1X  $1/g;(y    ///c%  2)&amp;        &amp;($_.     =&quot;X     &quot;);@e  =/.   ./g  ;$E=N&quot;Q&quot;,@  e;$  D=1   3;$C=  1;F        $o(1.    .11){    M{P$o  %2?   ($_  -1)%4?&quot;\e[  $o;   ${_  }f.&quot;:  &quot;\e        [$o;$   {_} f&quot;.   ($o==  1?&quot;   .&quot;:  &quot;:&quot;):($_-1  )%4   ?&quot;&quot;  :&quot;\e[  $o;        ${_}f  :&quot;}   1..  21}F$  z(2   ..1  0){nextQif  $z%  2;M   {(P(&quot;  \e[        $z;${  _}f   &quot;.(  H@Z))   &amp;&amp;( &amp;c&amp;   &amp;w.03))if(  ($z -1)    %2)&amp;&amp;  !((        $_+1)  %4);}3..1  9}SQb    {($I,    $x,$y)=@_;  $r=        0;M{$  c=0        ;M{/$  y/&amp;   &amp;U@  $I,$c     .$r     ;/$x/&amp;&amp;unH  @$I        ,$c.$  r;$        c++}@  $_;   $r+  +}@t}     SQf     {P&quot;\e[12;1  f\e        [0J\n  &quot;}S        Qa{my  ($x   ,$y  ,$t,$     f,@     r)=H=~/./g  ;s/        J/I/F  $x,$y;$w=  0;b\@  r,$   x,$  y;M{(     $h,     $i)=/./g;$             p=++$             h&gt;4?0             :$h;$             t.=$t[$i][$p];if($iQeq$w){$j++}else{$w=$i;$j=0}}@r;$j?$t:0}SQe{my($x,$y,$t,@r)=H=~/./g;s/J/I/F$x,$y;b\@r,$x,$y;$s=$o=$f=0;M{($c,$d)=/./g;if($o++){$f++if$s==$c}else{$s=$c}$d+=$d&gt;3?-4:1;$t.=$t[$d][$c]}@r;$f?$t:0}SQn{my($x,$y,$t,@r,$Y)=H=~/./g;s/J/I/F$x,$y;b\@r,$x,$y;$_=N&quot;:&quot;,@r;s/(\d)(\d):(\d)(\d)/$2$3:$4$1/;M{($e,$f)=/./         g;$t.=$t[$e]   [$f]}L/:/;$t}SQ   k{($l1,$lt,@       R)=H=~/./g;b\@R,   $l1,$lt;N&quot;:&quot;,@R}S     Qj{N&quot;-&quot;,k($_[0   ]),k$_[1]}SQ   h{   my($t,$b,$l,$r,   $c)=@_;F$o($t..$   b   ){M{P&quot;\e[$o;$   {_}f$c&quot;if(($   o%2   )or!(($_-1)%4)   )}$l..$r}c}SQi{   my(   $t,$b,$l,$r)   =@_;F$o($t..   $b)   {F($l..$r){P&quot;\   e[$o;${_}f.&quot;if$   o%2   ;P&quot;\e[$o;${_   }f&quot;.($o==1?&quot;   .&quot;   :&quot;:&quot;)unless($_-      1)%4}}c}SQd{         my($x,$y,$h,   $C)=@_;$l=($       x+1)*2;$c=($y+1)   *4-1;$h?h$l-1,$   l+1   ,$c-2,$c+2,$   C:i$l-1,$l+1   ,$   c-2,$c+2}SQp{my   ($p,$h,$c)=@_;M   {d/   ./g,$h,$c}L/   :/,$p}SQg{my   ($p   ,$e)=@_;$j=j$p   ,$e;($A,$B)=(L/   -/,   $j);p$A,1,&quot;*   &quot;;c;w.02;p$B   ,1,   &quot;@&quot;;c;w.01;$D=   =13&amp;&amp;$C==1&amp;&amp;&amp;f;   P&quot;\   e[$D;${C}f$p   Q-&gt;Q$e\n&quot;;$C   +=$   D&gt;19?$C&lt;60?12:1-$C:0;$D+=$D&lt;20?1:-7;p$A,0;p$B,0;c;w.01;}F(@e){if($T=a$_){g$_,$T;U@c,$T}elsif($T=e$_){g$_,$T;U@c,$T}else{$P=$_;$T=n$_;g$P,$T;U@c,$T}}|;s.\s..g;s:P:print:gx;s:U:push:g;s+N+join+g;s,M,map,g;s:S:sub:g;s&#39;H&#39;shift&#39;g;s-L-split-g;;s;F;for;g;s,Q, ,g;s/([^f])or/$1||/g;eval;&amp;f;print&quot;encrypted:\n@c\n&quot;;chargrill__DATA__The Playfair cipher is a manual symmetric encryption technique and was thefirst literal digraph substitution cipher. The scheme was invented in 1854 byCharles Wheatstone, but bears the name of Lord Playfair who promoted the useof the cipher.  The technique encrypts pairs of letters (digraphs), instead ofsingle letters as in the simple substitution cipher and rather more complexVigenere cipher systems then in use. The Playfair is thus significantly harderto break since the frequency analysis used for simple substitution ciphersdoes not work with it.&lt;/pre&gt;&lt;!-- Node text goes above. Div tags should contain sig only --&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-474411&quot;&gt;&lt;br&gt;&lt;br&gt;--chargrill&lt;hr&gt;&lt;font size=2&gt;&lt;pre class=&quot;block_code&quot;&gt;$,=42;for(34,0,-3,9,-11,11,-17,7,-5){$*.=pack&#39;c&#39;=&gt;$,+=$_}for(reverse split//=&gt;$*){$%++?$ %%2?push@C,$_,$&quot;:push@c,$_,$&quot;:(push@C,$_,$&quot;)&amp;&amp;push@c,$&quot;}$C[$#C]=$/;($#C&gt;$#c)?($ c=\@C)&amp;&amp;($ C=\@c):($ c=\@c)&amp;&amp;($C=\@C);$%=$|;for(@$c){print$_^$$C[$%++]}&lt;/pre&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>Morphological Japh (liverpole)</title>
    <link>http://prlmnks.org/html/552203.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/552203.html</guid>

    <description>
        Morphological (adj):&lt;p&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Relating to or concerned with the formation of admissible words in a language.&lt;/i&gt;&lt;p&gt;&lt;p&gt;Morph (verb):&lt;p&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Computer-assisted process in which an image (or video) is gradually transformed (morphosed) into another.&lt;/i&gt;&lt;br&gt;&lt;br&gt;This program has been tested under both Linux and Windows with the following syntax, where &quot;&amp;#91;...&amp;#93;&quot; indicates an optional argument:&lt;p&gt;&lt;b&gt;In Linux&lt;/b&gt;:&amp;nbsp;&amp;nbsp;&lt;i&gt;perl morph.pl&amp;nbsp;&amp;nbsp;&amp;#91;&amp;#91;entropy-radius&amp;#93;&amp;nbsp;&amp;nbsp;delay-factor&amp;#93;&lt;/i&gt;&lt;p&gt;&lt;b&gt;In Windows&lt;/b&gt;:&amp;nbsp;&amp;nbsp;&lt;i&gt;morph.pl&amp;nbsp;&amp;nbsp;&amp;#91;&amp;#91;entropy-radius&amp;#93;&amp;nbsp;&amp;nbsp;delay-factor&amp;#93;&lt;/i&gt;&lt;p&gt;Without options, default values are supplied.&amp;nbsp;&amp;nbsp;A single option is taken to be a &lt;i&gt;delay-factor&lt;/i&gt; in fractions of a second (eg. &quot;0.05&quot; is 5 milliseconds).&amp;nbsp;&amp;nbsp;If two options are provided, the second is the delay-factor, and the first is an &lt;i&gt;entropy-radius&lt;/i&gt;, which dictates how far from the center to position elements in the most random frame.&amp;nbsp;&amp;nbsp;Try experimenting with different values for each to see what results are produced.&lt;pre class=&quot;block_code&quot;&gt;sub J{print&quot;\e[H&quot;,$_[0];$d&amp;&amp;select$D,$D,$D,$d} sub A{$V={};@V=split$/,pop;for($w=$y=0;$y&lt;@V;$y++){$Y=$V[$y];@_=split(//,$Y);map{$_[$_]eq$&quot;or$V-&gt;{$w++}=[$_,$y]}0..@_-1}$V-&gt;{_}=$w;$V}sub P{my($X,$E)=@_;$E+=$W?31:101;$e = $W? &quot;\e[4;7;${E}m&quot;: &quot;\e[${E}m&quot;;$X=~s/( +)/\e[m$1$e/g&amp;&amp;$X}eval{require Win32::Console::ANSI};sub H{int rand pop}sub _{($j,$c,$n)=@_;$h=$j-&gt;{_};@J=($&quot;x79)x22;$|=0;map{$Q=$j-&gt;{$_%$h};$q=$s-&gt;{$_%$s-&gt;{_}};($M,$m)=(@$Q);($O,$o)=(@$q);if($M!=$O||$m!=$o){$M=($Q-&gt;[0]-=($M&lt;=&gt;$O));$m=($Q-&gt;[1]-=($m&lt;=&gt;$o));++$|}substr($ J[$m],$M,1,chr 33+H 93)}0..$h-1;push@$c,P(join($/,@J),$n%6);$|}s&#39;&#39;&gt;?!O&quot;?GIIAA??C!L!DC.?AAIGG??Aaa&quot;_#?@DDC??!O&gt;?!O&quot;?GIIAA??CLLl!d!c,?Aaigg__!a&amp;_?@DDC??!O&gt;?!O!?OYYi!a_ckkG!`&quot;c)?__aaigg__!a\&#39;_@DDC??!O&gt;?!O!?OYyi!q_ckkyrrhim}}woOP@BE]}|llqqa!yqov~~hjeeiggxxzVFFBIWWOAII?OQQ!O&gt;?!O&quot;?!I!Q?Ckkyrzji!}yWORRnm}}~~|}qa!yqp&quot;~vfmiywxzz~vvBIYWW!I&quot;Q&quot;O&gt;?!O!?QYYGWYYi!kyrzjquu}iGwrv~k{qrvt{uayww``nmmuu~miyoqij~|saiYYWIIY!QA?&quot;O&gt;?!O!?QYYGWYyi!k}vvdssuaigir~|koorbfceayww`hnneoowiyqoaajl|soiyyOAAQOO&quot;?!O&gt;?!O!?QYYGOQQackk}vvd{{!ywyr~|kssvffceaywwhhnffppwiyywiijn~uqiyyoaAQ\&#39;O&gt;?!O!?QYYI!QAckkyrrhww!ywyr~|kssvffceaywwghnnfppxiyywiijn~uqiyyoaaQ\&#39;O&gt;?!O??AQYYIA!QEK{yrjhwoqaigibnlkoorbb_aaywwow}}~pphiyqoaabdtsogWwoaaQOO&gt;?!O??AQYWG??QQU[[ZBjhwoqqiggbf~l|rrb`geaywwpo!}p`hiiyoqabv|s_GWYoaaQ!O#?O&gt;??!O?AQYWG??ARV\\\\JBJGGW!Ywwrr~n!~Nlkea!yb`fnnh`_iiyWWyzz~vfJIyoqAAOO!W&quot;O&gt;!?OOQAQWWG!?BV^LJBA!GYQYwwopbf~}\Llc_a!ya`FNnhg_aiIGWWyzbffnMKOQQA?#WOO&gt;:?$_!?&quot;_!o_&quot;?#_$?#_%?&quot;G&gt;%?3O#o&quot;Oo!_oOO!?OO#o%O&quot;o\&#39;OWWO&gt;%?4O&quot;o#O!_ooO!?#o\&#39;O&quot;o&amp;OWWOO&gt;;?&quot;_&amp;?!o#_*?!_%?GG&gt;:?&quot;_(?\&#39;_\&#39;?&quot;_&gt;9?&quot;_&amp;?%_?&quot;_&amp;?$_&gt;7?$_9?%_&#39;;$d=pop||0;$r=pop||240;$W=($^O=~/win/i);s/\n//gs;s/&gt;/\n/g;$I=$_;map{$K=$_;$k= chr$K+30;map{$S=chr($_+63);$I=~s/\Q$k$S\E/$S x$K/eg;}(0..63)}(3..32);@L=map{$A=$_;$;=&quot;&quot;; map{$_.=&#39;?&#39;x(79-y///c);map{$;.=1&lt;&lt;$A&amp;(-63+ord$_)?&#39;@&#39;:$&quot;} split//;$;.=$/}split$/,$I;$/.$;}(0..5);print&quot;\e[2J\n&quot;;{$F=$L[$a++%6];$T=$L[$a%6];$f=$F;$t=$T;$l=$C++%6;$u=A$f;$v=A$t;@b=@B=();$R=$v-&gt;{_};$s={};for($L=0;$L&lt;$R;$L++){{$g=H 78;$G=H 21;(($g-40)**2+($G-10)**2)&gt;$r and redo;$s-&gt;{$L}=[$g,$G]}}$s-&gt;{_}=$R;while(_$u,\@b,$l){}while(_$v,\@B,$l+01){}JP$f,$l;sleep 1;map{J$_}(@b,reverse@B);J P$t,($l+1)%6;redo}#~liverpole~&lt;/pre&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-465654&quot;&gt;&lt;hr /&gt;&lt;font size=&quot;1&quot;&gt;s&#39;&#39;(q.S:$/9=(T1&#39;;s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>I was bored ... (UnderMine)</title>
    <link>http://prlmnks.org/html/551462.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/551462.html</guid>

    <description>
        It has been a long time since I last tried my hand at a bit of obs so here goes nothing.&lt;pre class=&quot;block_code&quot;&gt;$c=&quot;sj\x09\x03\x12(\x15*O\x18=\x0aDh\x1e5&quot;.&quot;oR9\x03rd\x09\x16rJY+&amp;n\\2(H|Z\x05&amp;\x17&quot; ;sub c{$q=&#39;&#39;;$x= $y=0;for $z (split &#39;&#39;,pop ){for (0..$a){ $x+=2**$y if vec $z,$_,1;$y++;if (!($y%$b)) {$q.=chr($x);$y=$x=0;}}}$q;}$c.=&quot;\x16(fAc\x16\x0d]\x17:t&lt;aB\$P*T\x1e1z&quot;;$a=6;open 0;@a =&lt;0&gt;;$c.=&quot;\x14\x08Q\x14[b&quot;.&quot;8q\x12&#39;\x17\x16\@&gt;m\x0acEK\x1c]Rli\x07d&quot;;;$b=8;$c.=&quot;\\:b\@\x14[WL]0l\@\@\{&quot;;eval&amp;c($c.&quot;\x06nN&gt;\x20&quot;); $k=c(e(&#39;&quot;&#39;.e($a[-1]).&#39;&quot;&#39;));chop($k);e(k(q{er!\n&quot;;},$k,t(c(&quot;\x20D(*7&quot;.&quot;\x0e\x1d\x10A\\=#&quot;),in,pr))); J(A.P.H).PM;q{tP\x15\x13\x07\x04T2rX\x01A\x14l\x18\x10}&lt;/pre&gt;It&#39;s not too difficult to decode so next time I will try harder.P.S. This does need to be saved as file to run.
    </description>
</item>

        

<item>
    <title>The.. ekhm (Anonymous Monk)</title>
    <link>http://prlmnks.org/html/551288.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/551288.html</guid>

    <description>
        Excuse me if this code offends you in some way. This is one of my first obfuscated perl programs.For (and inspired by) some guy from one hackers&#39; conference.&lt;pre class=&quot;block_code&quot;&gt;#!/usr/bin/perl  sub o { $_ ;return shift if @_&gt;0;return 0;};$dick=shift||o(5);$prick_8=o($dick); [$dick];  ($dick);print(&quot; &quot;x($prick_8- o () +2) .&quot;(&#39;)\n&quot;);   print(&quot; &quot;x ($prick_8- o () +2).&quot;/ /\n&quot; ) while o($prick_8--&gt; 0);print o(&quot;(_)_)&quot;);~/8==* B--&gt;/ig;$prick_8=o (qq(DJc\n));print  $prick_8 ;&lt;/pre&gt;
    </description>
</item>

        

<item>
    <title>rusty lock (jynx)</title>
    <link>http://prlmnks.org/html/550774.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/550774.html</guid>

    <description>
        &lt;br&gt;With all respect to Pratchett, &quot;I aitn&#39;t dead&quot;... just very rusty.&lt;br&gt;jynx&lt;br&gt;&lt;pre class=&quot;block_code&quot;&gt;#!/usr/bin/perl -l$_=q{$|--;print join$&quot;,map{$_[$_{$_}]=sub{join$,,map{$_=(ord)-($_[0]?($_[0]+4+$=)*$=:$=);$_+=(2+$=)*2while$_&lt;(1&lt;&lt;$.)-2-3*$=;chr}split$,,pop}-&gt;($_{$_},$_)}map{$_{$_}=$a++;$.++;$_}map{y; ;;d;$=/=1.5;$.++;$_}sub{split$/,join q,,,&lt;DATA&gt;;unshift@_,map{$.=y---c-$|--;$_}shift;{undef@;;map@{[push@{$;[ord((/.{$.}(.)/)[$|])]},$_]},@_;@_=map@$_,@;;$.--&amp;&amp;redo}@_[$|--..$^F+$|]}-&gt;()},s,$/,,g,eval__END__uhinbylzobxiivxqsauhzozmibxtbemzujwqxzafufde&lt;/pre&gt;
    </description>
</item>

        

<item>
    <title>Breaking the indecipherable cipher, courtesy Charles Babbage. (chargrill)</title>
    <link>http://prlmnks.org/html/550450.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/550450.html</guid>

    <description>
        &lt;p&gt;This is a compliment to my recent obfuscated post, [id://549415].  In honor of [href://http://en.wikipedia.org/wiki/Charles_Babbage#Other_accomplishments|Charles Babbage] [href://http://en.wikipedia.org/wiki/Charles_Babbage|(pictured here so you don&#39;t have to squint &lt;b&gt;too&lt;/b&gt; hard)], who is credited with breaking Vigenre&#39;s cipher ca. 1854, but his method was not published until several years later, and as a result credit for the development was instead given to Friedrich Kasiski, who made the same discovery some years after Babbage.&lt;/p&gt;&lt;p&gt;What is now commonly referred to as the Kasiski examination allows a cryptanalyst to deduce the length of the keyword used in the polyalphabetic substitution cipher. Once the length of the keyword is discovered, the cryptanalyst lines up the ciphertext in N columns, where N is the length of the keyword. Then, each column can be treated as the ciphertext of a monoalphabetic substitution cipher. As such, each column can be attacked with [href://http://en.wikipedia.org/wiki/Frequency_analysis|frequency analysis]&lt;/p&gt;&lt;p&gt;This homage to Charles Babbage uses this approach.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;                            $_=&#39;`$t`                        `.=lc for&lt;&gt;;u($_`                       )for` 3..``6;%t=qw `                    `(a 82 b 15 c 28 d 43 e `                    `127 f 22 ` g 20 h 61 i 70 `                  `j 2 k 8 ```````l 40 m 24 n 67                  ` o 75`              ` p 19 q 1`                ` r `                   60 s 63 t                  ` 91                    ` u 28 v 1                  `0 w                    ` 24 x 2 y `                `20                     ` ` z 1);$k=                k()                    ` ``;$d+=$t{$`               `_}f                    o``r keys%t;$l               =$d`            /in`  ``t(`length($t)/                $k)/100 `  ;map{%n=f(t($_));@g=b(1,\`                `%n);$y.=  i(\@g)}0..$k-1;@_=(a..z);                 map{@$_=  @_;if($;++){for$&quot;(2..$;){                  pu  `    sh`    ``   @$_,shift@$_}                 ``  ``   `}`          }@_;map{$p=i`                 n`        d`ex       `((join\&#39;\&#39;,`                  `    `  `@`{(sp    `lit//,$y)[$c                  `   ]}),$_);` `$o```.=$p&gt;=0?$`a`                  `` [ $p]:     $_;$c+=$c&lt;$k-1?1                  ````:  `-$`  ``k+1}split//,$t;s                   ``ub \&#39;b{my($e,$s  `,@g)=@_;p             `                   ``ush@             `g`,[$_,(s             pli`                    ``                ``t//,\&#39;#\&#39;          ``x in`                     ``             `t($$s{`$_}*$e         )`)]for                      `        `+sort+keys%$s;retur        ```n@g}s`                      ub\&#39;c{my$x=shift;$x=g($x,shift    ```)while@_;                       return$x}sub\&#39;f{my%d;$d{$_}++f`  or grep/[a-z]/                        ,split//,shift;$d{$_}||=0for a..z;return%d}su                        b\&#39;g{my($x,$y)=@_;($x,$y)=($y,$x%$y)while$y;r                      eturn$x}sub\&#39;i{my($g,@c)=@_;map{push@c,o(v($g),`       `` `          $$g[0][0]);w($g)}0..25;return(map{$_-&gt;[1]}sort{$`       b-``          &gt;[0]&lt;=&gt;$a-&gt;[0]}@c)[0]} sub\&#39;k{my@g;for(sort{$s{`      `$b}``       &lt;=&gt;$s{$a}}keys%s){last ``if$s{$_}&lt;3;next unless y     `/a-```    z//&gt;2;my@f  ;push@f,(pos   `($t)-3)while$t=~/$_/g;m`      ````````y$g=c(n(@f)   );`$g````      &gt;2&amp;&amp;push@g,$g}return c(@`         g)}sub\&#39;n{my$o=                  shift;return map{$_-$o}@_       }sub\&#39;o{my($g,$w)                 =@_;my$c=0;map{map{/\+/&amp;&amp;`      $c++;/\-/&amp;&amp;$c--}@                 $_}@$g;return[$c,$w]}sub\&#39;     `t{my($o)=@_;my$c=                0;my$r;map{$r.=$_ unless(   `$k-$o+$c)%$k;$c++}                split//,$t;$r=~s/[^a-z]/   /g;return$r}sub\&#39;u{               my$l=$_[0];$s{substr($t`  ,$_,$l)}++for 0..(le              ngth($t)-$l)}sub\&#39;v{my($  `m)=@_;my@g=b($l,\%t             );$s=\@g;$z=0;map{$x=0;ma   `p{$$s[$z][$x]=$$m`            [$z][$x]eq\&#39;#\&#39;&amp;&amp;$$s[$z][     `$x]eq\&#39;#\&#39;?\&#39;+`            \&#39;:\&#39;-\&#39;;$x++}@$_;$z++}@$m       `;return$s}sub           \&#39;w{$R=shift;push@$R,shif`        `t@$R}print&quot;           Key: $y\nPlaintext:\n$o\``          `n&quot;;&#39;;s-\s           \s+--gmx;s&amp;`&amp;&amp;gm;eval#;`            #etur#``          `#my($x($v());$y=$z#`#`               ##````        ``#  charles   #``                #``````   ````#  babbage  #`                  #`````````` # # # # #`                     # ` ` ` `# ##`&lt;/pre&gt;&lt;p&gt;This reads in ciphertext via STDIN.  If saved as &lt;tt class=&quot;inline_code&quot;&gt;babbage.pl&lt;/tt&gt;, and &lt;a href=&quot;/html/549415.html&quot;&gt;Vigenre cipher&lt;/a&gt; is saved as &lt;tt class=&quot;inline_code&quot;&gt;vigenere.pl&lt;/tt&gt;, you can see it in action via:&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;perl vigenere.pl | perl babbage.pl&lt;/pre&gt;&lt;p&gt;I have a more fully featured (unobfuscated, commented, and POD&#39;d) version which even produces [href://http://www.kentcowgill.org/devig.html|HTML output] detailing the results of the Kasiski examination, and optionally the letter frequency analysis charts, which I will post to the code contributions section shortly.  But not too quickly, as it&#39;s basically a giant spoiler for this :-)&lt;/p&gt;&lt;p&gt;I&#39;d like to give a special thanks to [liverpole], as without his [id://520274], I wouldn&#39;t have been so easily able to generate an ascii &#39;portrait&#39; of Charles Babbage that I could then turn into code.&lt;/p&gt;&lt;!-- Node text goes above. Div tags should contain sig only --&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-474411&quot;&gt;&lt;br&gt;&lt;br&gt;--chargrill&lt;hr&gt;&lt;font size=2&gt;&lt;pre class=&quot;block_code&quot;&gt;$,=42;for(34,0,-3,9,-11,11,-17,7,-5){$*.=pack&#39;c&#39;=&gt;$,+=$_}for(reverse split//=&gt;$*){$%++?$ %%2?push@C,$_,$&quot;:push@c,$_,$&quot;:(push@C,$_,$&quot;)&amp;&amp;push@c,$&quot;}$C[$#C]=$/;($#C&gt;$#c)?($ c=\@C)&amp;&amp;($ C=\@c):($ c=\@c)&amp;&amp;($C=\@C);$%=$|;for(@$c){print$_^$$C[$%++]}&lt;/pre&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>My First time... (widdlepuke)</title>
    <link>http://prlmnks.org/html/550391.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/550391.html</guid>

    <description>
        &lt;tt class=&quot;inline_code&quot;&gt;perl -e &quot;$c=1;foreach $l(a..z){if($c==13||$c==1||$c==9||$c==5){push(@m,$l);}elsif($c==7){push(@m, $l);push(@m,$l);}$c++;}($b,$f,$h,$h,$j,$n )=(shift(@m),shift(@m),shift(@m),shift(@m),shift(@m),shift(@m));@m=();push(@m,$n,$b,$h,$h,$j,$f);print @m;&quot;&lt;/tt&gt;
    </description>
</item>

        

<item>
    <title>balls III (teamster_jr)</title>
    <link>http://prlmnks.org/html/550028.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/550028.html</guid>

    <description>
        Apologies for posting two in a row.&lt;br&gt;just did this:&lt;pre class=&quot;block_code&quot;&gt;open F,&quot;&gt;o.bmp&quot;;print F pack(&quot;a2L13&quot;,BM,37686,0,54,40,112,112,1572865,0,37632),map{chr(($_%112-55)**2+($_/112-55)**2&lt;3025?255-3*(($_/112-75)**2+($_%112-75)**2)**.5:0)x3}0..12544&lt;/pre&gt;hope you like it.&lt;br&gt;al
    </description>
</item>

        

<item>
    <title>time quine (teamster_jr)</title>
    <link>http://prlmnks.org/html/549529.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/549529.html</guid>

    <description>
        based (roughly) on the later of [254692|these], here&#39;s a quick something i&#39;ve knocked up as light relief while i&#39;m working on my next serious obfu:&lt;pre class=&quot;block_code&quot;&gt;$_=&#39;$p=chr(39);$t=reverse&quot;\$_=$p$_$p;\ns!&quot;.chr(92).&quot;s!!g;eval&quot;;$_=&quot;2.;NNNO82VWiiiiiY2.8iW2/Ve&lt;.8WMdO82WNA-77-A3ii3,ryir,K;F.;o.2O823i`VFBVVn.&lt;82.;O82&lt;.;O83d82!&quot;;s!.!-32+ord$&amp;!eg;s!.!(++$c%2?$&quot;:1)x$&amp;!eg;s!.{10}!push@_,$&amp;!eg;{$q=$t;$z=sprintf&quot;%2d:&quot;x3,(localtime)[2,$|=1,0];sleep$|;my$s;for$l(0..7){map$s.=s#:##?$&quot;x4:$_[$l+$_*8].$&quot;,split//,$z;$s.=$/}$s=~s&amp;1&amp;chop$q&amp;eg;$_=reverse$q;s%.{78}%$&amp;$/%g;print&quot;\ec$s$/$_$/&quot;;redo}&#39;;s!\s!!g;eval&lt;/pre&gt;there is a little golfing that could be done, which i might try and update with later.&lt;Br&gt;enjoy&lt;br&gt;al&lt;br&gt;p.s. incidentally - does the title rhyme?  I&#39;m never sure whether it&#39;s pronounced qween or qwine :)&lt;p&gt;&lt;small&gt;&lt;b&gt;Update&lt;/b&gt;: fixed output layout for standard width console (and cut out a line or so)&lt;/small&gt;
    </description>
</item>

        

<item>
    <title>Vigenre cipher (chargrill)</title>
    <link>http://prlmnks.org/html/549415.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/549415.html</guid>

    <description>
        &lt;p&gt;A slightly less simple obfuscation for a slightly less simple substitution cipher.  My next stop in old forgotten encryption ciphers is the [wp://Vigenere cipher|Vigenre cipher].  This is a slightly more obfuscated encryption cipher than my [skytale cipher|last one] - In case you haven&#39;t noticed, I&#39;m increasing the obfuscation level as the encryption algorithm increases.  This either takes a file as a parameter to encrypt in vigenere, or provided no input encrypts it&#39;s __DATA__.&lt;/p&gt;&lt;p&gt;Note: if you save this locally (and I don&#39;t know how you might run it otherwise) be sure to give it a filename of a good number of characters ( &amp;gt; 5) - The longer the filename, the better the encryption key.&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;#!/usr/bin/perl$ ..=$ _ for qw|$ @=/b..u\;/_@ =vqv \?qvcl+FOTO ,_@:_$;kbv($_@ =$ @;jd/_;++\(dqR_&quot;/2. ._;\(vz xH$ _@,xHjdy$ _@)) )$ @;$. =kbv[$ _@] ,_0= ~{}w {g|;$ _=$ . ,y,/FO\\{vzlu}\$dqR_Hjk\@yq(xybRc),(DA)/punz\\\@for\$him_to{stare},,s.. $ _.gee;print map { map { $ %= 0 ;s &#39;([A-Z])(?{$ %=1})&#39;lc$ 1&#39;e ;$ ;=$ .[ $ *] [ - 97 +ord ]; $ *+= $ *== @ .-1? -$ *:1 ;ord&gt; 96?$ %? uc$ ; :$ ; :$ _ }split//}&lt;DATA&gt;__DATA__The Vigenere cipher, known by some as &#39;le chiffre indechiffrable&#39; (French for&#39;the indecipherable cipher&#39;) is a method of encryption that uses a series ofdifferent Caesar ciphers based on the letters of a keyword, though there issome argument among cryptographic circles as to which incarnation of thisparticular polyalphabetic substitution can accurately be attributed to Blaisede Vigenere.  This implementation is a simple form of a polyalphabeticsubstitution.  To encipher, a table of alphabets can be used, termed a tabularecta, or Vigenere table.  It consists of the alphabet written out 26 timesin different rows, each alphabet shifted cyclicly to the left compared to theprevious alphabet.  Incidentally, there&#39;s a good chance that this plaintextis long enough to display the cryptographical weakness of this particularalgorithm.  Can you spot it?&lt;/pre&gt;&lt;p&gt;I&#39;m currently working on the brute-force decryption for texts encrypted with this algorithm.  It&#39;s working now, but I&#39;d like to clean it up and make it more general, as well as optionally display HTML output.&lt;/p&gt;I&#39;ve found a somewhat reliable method for letter distribution frequency analysis that seems to work for a good number of test cases - Letter frequency analysis is the obvious weakness of this cipher.  I&#39;ll post a followup with the cracking script a bit later...&lt;/p&gt;&lt;!-- Node text goes above. Div tags should contain sig only --&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-474411&quot;&gt;&lt;br&gt;&lt;br&gt;--chargrill&lt;hr&gt;&lt;font size=2&gt;&lt;pre class=&quot;block_code&quot;&gt;$,=42;for(34,0,-3,9,-11,11,-17,7,-5){$*.=pack&#39;c&#39;=&gt;$,+=$_}for(reverse split//=&gt;$*){$%++?$ %%2?push@C,$_,$&quot;:push@c,$_,$&quot;:(push@C,$_,$&quot;)&amp;&amp;push@c,$&quot;}$C[$#C]=$/;($#C&gt;$#c)?($ c=\@C)&amp;&amp;($ C=\@c):($ c=\@c)&amp;&amp;($C=\@C);$%=$|;for(@$c){print$_^$$C[$%++]}&lt;/pre&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>Just Another Perl Hacker (TedPride)</title>
    <link>http://prlmnks.org/html/549284.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/549284.html</guid>

    <description>
        This displays better in an editor that allows 5 more characters of width than PM. Oh well.&lt;pre class=&quot;block_code&quot;&gt;@_=split//,&#39;ZRTVOC3H4F5FA6T85FZW3ESN7K8VFHBBPIGPFTLRXCROQ6UWFW5ZSA6N4YWM0LIGGF6V9NER9N9CZDD20WY7YUQE2QBDPCS3WIDKHDU4FS58VDLG3YUFGZCKFA8EBEEZRTGD9OW9T5CO4VM9I2115HK4GI11XDFV25ANA8RO81WFOJB1F936PF6N6OSAAK2FZ1XRR1HJUIA1FHCG9ZXBR7ZSLIZ3JQSEH47RIZTDPW1EAHXF9EOZQRNBDSAF1P5NJ2S3EWNQQFGAN56HL6C5MVIXVLW6U6&#39;;$.=join&#39;&#39;,reverse map{$_[$_*(ord(&#39;K&#39;)-ord(&#39;@&#39;))]}1..(localtime(1271+2))[1];do{$/=substr($.,($_*3),3);$/++for(-1*-1)..10**3;print$/;}for $|..($#_-282);&lt;/pre&gt;
    </description>
</item>

        

<item>
    <title>My first JAPH (ColinHorne)</title>
    <link>http://prlmnks.org/html/549148.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/549148.html</guid>

    <description>
        It&#39;s late at night, and I&#39;ve just completed my first JAPH (part of my exam-revision procrastination project). Comments are most welcome, whether positive or negative!Hope you like it!&lt;pre class=&quot;block_code&quot;&gt;#!/usr/bin/perl -w@k=split//,&#39;colin@colinhorne.co.uk&#39;;@p=sub{$_=shift;my@r;for(split/,/){push@r,sub{my@r;$_=shift;for(/.{8}/g){push@r,chr(eval&quot;0b$_&quot;)}@r}-&gt;(sprintf(&#39;%032b&#39;,eval(&quot;0x$_&quot;)))}@r}-&gt;(&quot;291a1f1d,4e210d00&quot;.&quot;,18010b1a,4f220b17,4243274f,16080a1e&quot;);{my$buf=0;my$count=0;sub d{$buf=(($buf&lt;&lt;1)|($_?1:0))&amp;255;print chr($buf)unless(++$count%8)}}sub{my$f=shift;for(0..$#p){for my$b(map{2**$_}(reverse(0..7))){local$_=(ord($k[$_%$#k])^ord($p[$_]))&amp;$b;&amp;$f}}}-&gt;(\&amp;d);print&quot;\n&quot;;&lt;/pre&gt;(PS: I&#39;m aware of one bug to do with padding thingies to 4 bytes width, but I don&#39;t really have time to fix it)
    </description>
</item>

        

<item>
    <title>Obfu&#39;d signatures (wulvrine)</title>
    <link>http://prlmnks.org/html/548030.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/548030.html</guid>

    <description>
        I finally caved into the pressures of a fellow monk [liverpole] and created an obfuscated signature file.  &lt;br&gt;I&#39;ve seen others list them here, so here is mine.&lt;p&gt;This is my first obfu, nothing fancy etc.  Suggestions are appreciated as always.&lt;p&gt;&lt;p&gt;&lt;pre class=&quot;block_code&quot;&gt;s&amp;&amp;VALKYRIE &amp;&amp;&amp; print $_^=q|!4 =+;&#39; *|&lt;/pre&gt;&lt;p&gt;Why Valkyrie? The name has high importance in my life, mayhap when I finish up my home node it will be clearer.  &lt;br&gt;Thanks to [liverpole] for the hints! (Will someone please take that 2x4 away from him! ow my aching skull!)&lt;!-- Node text goes above. Div tags should contain sig only --&gt;&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-520917&quot;&gt;s&amp;&amp;VALKYRIE &amp;&amp;&amp; print $_^=q|!4 =+;&#39; *|&lt;/div&gt;&lt;/div&gt;
    </description>
</item>

        

<item>
    <title>Monster Cipher Generator (turo)</title>
    <link>http://prlmnks.org/html/548015.html</link>
    <guid isPermaLink="true">http://prlmnks.org/html/548015.html</guid>

    <description>
        &lt;!-- Node text goes above. Div tags should contain sig only --&gt;&lt;p&gt;Inspired by [Hue-Bond] and is recent node &quot;[node://547911]&quot;, i&#39;ve made a script to generate an obfuscated and headache-maker code like the following one&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;#!/usr/bin/perl$_=q|print chr foreach(do{$}=42;$}++;$}+=0x13;$}++;$}--;++$};$}+=0xa;$}+=0x13;$}++;$}++;$}--;--$};$}--;$}++;--$};$}+=0x13;$}+=0xa;++$};--$};$}++;--$};$}++;$}-=0x14;$}+=0xa;$}--;--$};$}-=0x14;$}--;$}+=0xa;$}+=0xa;$}+=0xa;$}--;$}-=0x14;$}+=0x13;$}+=0xa;$}--;--$};$}-=0x14;$}-=0x14;$}++;++$};$}-=0x14;$}-=0x14;--$};$}+=0xa;$}+=0xa;$}+=0x13;$}--;$}--;$}-=0x14;--$};$}--;$}--;$}+=0x13;++$};$}+=0xa;$}++;$}--;++$};$}--;$}+=0x13;$}+=0xa;++$};$}-=0x14;$}--;$}++;$}++;++$};$}++;$}-=0x14;$}+=0xa;$}+=0x13;--$};$}++;++$};$}--;$}++;++$};$}--;$}+=0xa;$}++;$}-=0x14;$}+=0xa;++$};--$};$}++;--$};$}+=0xa;$}++;++$};$}++;$}--;--$};$}-=0x14;$}++;$}-=0x14;$}-=0x14;++$};--$};--$};--$};$}-=0x14;--$};$}-=0x14;--$};$}+=0x13;$}++;$}+=0x13;$}+=0xa;--$};$}++;--$};--$};$}++;$}+=0x13;++$};--$};$}-=0x14;$}+=0xa;$}-=0x14;++$};$}+=0xa;$}++;$}--;$}++;$}++;++$};$}-=0x14;$}--;$}++;$}+=0xa;$}--;$}--;$}-=0x14;++$};$}++;$}+=0x13;$}--;$}-=0x14;$}-=0x14;$}++;$}++;++$};++$};$}++;$}+=0x13;$}+=0x13;$}+=0xa;++$};++$};$}+=0x13;$}++;--$};--$};--$};$}++;$}++;$}+=0xa;$}++;$}--;$}-=0x14;$}+=0xa;--$};$}+=0xa;--$};$}-=0x14;$}--;$}+=0x13;$}+=0xa;++$};++$};$}+=0xa;$}--;$}++;$}--;$}--;--$};--$};$}++;$}-=0x14;++$};--$};++$};--$};$}+=0xa;$}+=0xa;$}--;$}-=0x14;++$};$}+=0x13;--$};++$};$}++;$}--;++$};$}--;--$};++$};$}--;$}+=0xa;$}-=0x14;$}-=0x14;$}+=0x13},do{$}=(1&lt;&lt;5)+0xa;$}+=0x13;++$};--$};$}++;++$};$}++;$}+=0xa;++$};$}-=0x14;++$};++$};$}-=0x14;$}+=0x13;--$};$}+=0xa;$}-=0x14;$}--;--$};--$};$}-=0x14;$}--;$}+=0x13;++$};--$};$}++;++$};$}--;++$};++$};$}+=0x13;++$};$}+=0x13;$}-=0x14;--$};$}+=0x13;$}+=0xa;$}--;$}+=0x13;--$};$}+=0xa;++$};--$};$}+=0xa;--$};$}-=0x14;--$};$}--;$}-=0x14;$}-=0x14;$}-=0x14;$}++;$}+=0x13;$}+=0x13;$}--;$}+=0xa;$}--;$}-=0x14;$}--;$}--;$}+=0xa;$}++;++$};$}--;$}+=0x13;++$};$}-=0x14;$}++;++$};$}--;$}+=0xa;$}++;$}++;--$};$}-=0x14;$}++;$}-=0x14;--$};$}++;$}++;$}-=0x14;$}++;--$};$}+=0xa;$}--;--$};$}-=0x14;$}+=0xa;$}+=0xa;$}++;$}+=0x13;$}-=0x14;$}+=0xa;$}--;--$};$}+=0x13;$}++;--$};$}+=0xa;$}++;$}++;$}--;$}+=0x13;$}-=0x14;$}+=0x13;$}+=0x13;$}+=0xa;$}--;--$};$}--;++$};$}--;++$};$}-=0x14;$}--;$}+=0x13;$}++;++$};$}-=0x14;$}+=0xa;++$};$}+=0xa;--$};$}--;++$};$}--;--$};++$};$}-=0x14;$}-=0x14;$}++;$}+=0xa;--$};$}--;$}+=0x13;--$};$}++;$}+=0xa;$}--;$}++;--$};$}-=0x14;++$};$}+=0xa;++$};++$};++$};++$};--$};$}+=0xa;++$};$}--;--$};$}--;$}--;++$};$}-=0x14;--$};$}--;$}++;$}+=0xa;--$};$}++;$}--;++$};--$};$}++;--$};--$};--$};$}++;$}+=0xa;++$};$}--;--$};$}++;++$};$}-=0x14;++$};$}++;$}++;++$};$}--;$}-=0x14;--$};$}+=0x13;$}-=0x14;$}--;--$};$}-=0x14;--$};$}++;--$};--$};$}-=0x14;$}+=0x13;++$};$}-=0x14;$}-=0x14;--$};--$};--$};--$};++$};$}-=0x14;--$};$}+=0x13;--$};$}+=0xa;$}--;$}+=0x13;$}+=0x13;$}+=0x13;$}+=0xa;--$};++$};$}+=0x13;$}-=0x14;$}++;--$};$}+=0x13;$}--;--$};++$};$}-=0x14;++$};--$};$}--;$}+=0x13;$}--;$}+=0xa;$}--;$}+=0xa;++$};$}--;$}--;$}++;$}++;--$};$}-=0x14;$}+=0xa;$}+=0xa;++$};$}-=0x14;++$};$}-=0x14;$}--;$}+=0xa;--$};++$};$}+=0xa;++$};$}++;$}++;--$};++$};$}+=0xa;$}+=0xa;$}--;$}-=0x14;$}--;$}--;--$};$}+=0xa;$}--;++$};$}-=0x14;$}+=0xa;$}+=0xa;$}-=0x14;$}-=0x14;$}+=0x13;--$};++$};$}-=0x14;++$};--$};$}+=0xa;$}--;$}+=0xa;$}-=0x14;--$};++$};$}++;$}++;$}+=0xa;$}+=0xa;$}+=0xa;$}-=0x14;$}++;$}-=0x14;$}+=0x13;$}+=0xa;$}+=0xa;++$};$}+=0xa;$}-=0x14;$}--;$}--;$}--;++$};--$};$}+=0xa;$}--;$}+=0x13;++$};--$};$}+=0xa;$}++;--$};$}-=0x14;--$};$}--;$}+=0xa;$}++;++$};$}--;$}++;$}++;$}--;$}++;++$};$}++;$}--;$}-=0x14;$}+=0xa;--$};$}+=0xa;$}--;++$};++$};$}--;--$};$}++;$}++;$}-=0x14;$}+=0xa;$}+=0xa;++$};$}-=0x14;--$};$}+=0xa;++$};$}--;++$};--$};++$};++$};$}-=0x14;$}+=0x13;$}+=0xa;$}-=0x14;$}++;$}--;$}+=0xa;$}+=0xa;--$};++$};++$};--$};--$};--$};$}-=0x14;$}--;$}-=0x14;$}-=0x14;--$};$}-=0x14;$}+=0xa;$}--;$}+=0xa;$}--;--$};$}-=0x14;$}--;$}+=0xa;--$};$}-=0x14;$}++;$}++;$}-=0x14;$}+=0x13;$}--;$}--;$}-=0x14;$}++;$}-=0x14;$}+=0x13;$}+=0x13;$}--;--$};$}-=0x14;++$};$}++;$}--;$}+=0xa;$}+=0xa;$}--;$}++;++$};--$};$}+=0xa;$}++;$}+=0xa;$}--;$}+=0x13;--$};$}+=0x13;--$};--$};$}-=0x14;--$};$}+=0x13;--$};$}-=0x14;++$};$}+=0x13;$}-=0x14;$}+=0x13;$}-=0x14;$}+=0xa;$}+=0x13;$}+=0xa;++$};$}+=0xa;++$};$}--;$}+=0x13;$}--;--$};$}--;++$};$}+=0xa;++$};$}-=0x14;$}+=0x13;++$};$}--;++$};--$};$}-=0x14;$}+=0xa;$}--;$}-=0x14;--$};$}++;$}++;$}-=0x14;$}++;$}--;--$};$}+=0xa;$}++;--$};++$};--$};$}+=0xa;++$};$}++;$}++},do{$}=42;$}-=0x14;$}+=0x13;$}-=0x14;++$};$}++;$}+=0x13;$}-=0x14;--$};--$};++$};$}+=0x13;$}--;$}++;--$};--$};$}++;$}+=0x13;$}-=0x14;$}-=0x14;$}++;$}--;$}--;$}+=0xa;$}+=0x13;$}+=0xa;$}--;$}+=0x13;$}+=0xa;$}++;$}-=0x14;--$};$}++;$}-=0x14;$}+=0xa;++$};$}+=0x13;$}+=0x13;$}-=0x14;$}++;$}-=0x14;$}++;$}++;$}++;++$};--$};$}-=0x14;++$};$}+=0xa;$}++;$}--;$}++;$}+=0xa;$}++;$}+=0x13;$}+=0xa;$}--;++$};$}++;$}+=0xa;$}+=0x13;$}++;$}--;$}-=0x14;$}-=0x14;$}+=0x13;$}-=0x14;$}++;$}-=0x14;++$};$}+=0x13;$}+=0xa;$}+=0xa;$}+=0xa;$}+=0xa;--$};$}-=0x14;$}++;$}+=0xa;$}+=0xa;++$};$}--;$}--;++$};$}--;$}--;$}--;--$};$}++;++$};$}++;$}--;--$};$}-=0x14;++$};$}+=0xa;$}+=0x13;$}++;$}-=0x14;++$};++$};$}+=0xa;$}--;$}-=0x14;$}+=0x13;$}-=0x14;$}--;--$};--$};$}--;$}-=0x14;--$};$}+=0x13;$}-=0x14;$}++;--$};$}--;$}-=0x14;--$};--$};$}+=0x13;--$};$}++;--$};$}+=0x13;$}+=0xa;$}-=0x14;++$};--$};$}++;$}+=0xa;++$};++$};$}--;$}++;$}+=0x13;$}+=0xa;$}-=0x14;$}-=0x14;$}+=0x13;++$};$}+=0x13;$}-=0x14;$}+=0xa;++$};$}--;$}+=0x13;$}++;--$};++$};--$};$}++;$}++;--$};--$};$}-=0x14;++$};$}--;$}+=0xa;$}-=0x14;$}++;$}--;$}--;--$};$}--;$}+=0x13},do{$}=(1&lt;&lt;5)+0xa;--$};$}+=0x13;$}++;$}+=0x13;$}++;$}+=0xa;$}--;$}++;$}--;$}++;$}+=0xa;$}-=0x14;++$};++$};$}++;$}+=0xa;$}+=0x13;++$};$}+=0xa;$}-=0x14})|;  s/\n//g;eval;print&quot;\n&quot;#Just Another Perl Hacker&lt;/pre&gt;&lt;p&gt;The script generator is simple, and can be customized to generate a more interesting output (now, i&#39;m out of ideas)&lt;/p&gt;&lt;pre class=&quot;block_code&quot;&gt;#!/usr/bin/perluse strict;use List::Util &#39;shuffle&#39;;$_=&quot;Just Another Perl Hacker,&quot;;my @plaintext = map { ord } split &quot;&quot;;my @ciphertext = ();my @init       = (&#39;$}=(1&lt;&lt;5)+0xa&#39;,&#39;$}=42&#39;);my @op         = ( &#39;$}++&#39;, &#39;$}--&#39;, &#39;--$}&#39;, &#39;++$}&#39;,                   &#39;$}+=0xa&#39;, &#39;$}-=0x14&#39;, &#39;$}+=0x13&#39; );for (my $i=0; $i&lt;@plaintext; $i++) {        my (@stack,$result,$stop);        push @stack, $init[int(rand(@init))];        while (!$stop) {                my $heap = pop @stack;                $result  = eval &quot;$heap&quot;;                if ($result == $plaintext[$i]) {                        push @ciphertext, $heap;                        $stop++; next;                } else {                        next if ( abs($result) &gt; 127 );                        @op = shuffle(@op);                        for (my $j; $j&lt;@op; $j++) {                                push @stack, &quot;$heap;$op[$j]&quot;;                        }                }        }}print &quot;#!/usr/bin/perl\nprint chr foreach (&quot;;for (my $i=0; $i&lt;@ciphertext; $i++) {        print &quot;do{$ciphertext[$i]}&quot;,((($i+1)==@ciphertext)? &quot;)&quot;:&quot;,&quot;);}print &quot;\n#Just Another Perl Hacker&quot;;&lt;/pre&gt;I like very much the scripts who creates scripts, that is, the meta-scripts :-)cheers&lt;br&gt;&lt;br&gt;turo&lt;div class=&quot;pmsig&quot;&gt;&lt;div class=&quot;pmsig-453086&quot;&gt;&lt;tt class=&quot;inline_code&quot;&gt;perl -Te &#39;print map { chr((ord)-((10,20,2,7)[$i++])) } split //,&quot;turo&q