Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: Careful Evaluation

by Brovnik (Hermit)
on Jun 15, 2001 at 01:07 UTC ( [id://88629]=note: print w/replies, xml ) Need Help??


in reply to Careful Evaluation

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

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://88629]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (6)
As of 2025-06-23 10:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.