Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
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


In reply to Re: Careful Evaluation by Brovnik
in thread Careful Evaluation by iamcal

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Domain Nodelet?
    Chatterbox?
    and the web crawler heard nothing...

    How do I use this?Last hourOther CB clients
    Other Users?
    Others admiring the Monastery: (4)
    As of 2024-07-19 19:21 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      No recent polls found

      Notices?
      erzuuli‥ 🛈The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.