I dare somebody to deconstruct it :)
OK. First, tidy up syntax and delimiters and rename some variables.
$$ = q{$_=unpack'u',q|L)%\]<2$D7STG<')I;G0@(DIU<W0@86YO=&AE<B!097)L(&A
+A8VME<B(G(3L`|;};
$b = q{$_=unpack'u',q|<)%\])R1?/7$A*"1?*3TH)"0]?B\N*B]G*2$G.P``|;};
#$$ =~ s/\n//g;
$a = '$_=$b';
$_ = '$_=$a';
#$} =~ s/\n//g;
eval; eval; eval; eval; eval; eval; eval; eval; eval; eval;
The commented lines aren't needed if the q|| are on one line.
So, (this is easier to read starting from the bottom of the tidied code) the first 3 evals set $_ to $a and then $b then eval the unpack inside $b.
The unpack produces $_='$_=q!($_)=($$=~/.*/g)!';, which, after
3 more iterations sets $_ to $$ (the unpack on the first line).
This unpack sets $_=q!$_='print "Just another Perl hacker"'!;,
which, after another 2 iterations gives us the familiar
print "Just another Perl hacker" which duly evals.
Hope that is sufficient explanation.
-- Brovnik
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|