http://www.perlmonks.org?node_id=146088


in reply to Just another silly pattern

You have an "x" deliminated (did I just make that word up?) string ($d) of the output of
chr() - 1
on every character of your original code. And on that topic your original code is: {@a=("A(Whfg)","A(nabgure)","A(crey)","A(unpxre)");for (@a){s/\(/\"/g;s/\)/ \"/g;tr/A-Ma-m]N-Zn-z]/N-Zn-z]A-Ma-m]/;s/N/print/;$_.=";";eval($_);}} You take every element of @a and first turn the { into " and the } into a space and a " so:
A(Whfg)
becomes ( s/\(/\"/g )
A"Whfg)
becomes ( s/\)/ \"/g )
A"Whfg "
then you use tr/A-Ma-m]N-Zn-z]/N-Zn-z]A-Ma-m]/ to turn
A"Whfg "
into
N"Just "
this works because it replaces a character, for example W, with its complement (kinda broke explanation :) i.e. W is the 10th character in N-Z, and J is the 10th character in A-M, so J replaces W. It is case insensitive because you say both A-M and a-m, etc. Then
N"Just "
becomes ( s/N/print/ )
print"Just "
then ; is added to the end of the string by $_.=";"; and the string is evaluated! for my first explanation of a obfuscation, not that bad :)

Replies are listed 'Best First'.
Re: Re: Just another silly pattern
by Darkling (Beadle) on Feb 18, 2002 at 17:10 UTC
    Hehe. I didn't think anyone would actually go through it and explain it.
    Yes, I admit it is a little obvious, but it was fun to put together.

    Darkling
      well, if its any concelation, i had alot of fun taking it apart.