I decided that after a week without a spoiler, it would probably be worthwhile for me to post a brief explanation as to the workings of this code - It is based, loosely around an obfuscation written by Erudil entitled "My 2 cents worth". In terms of obfuscation and code complexity, this code is fairly simple, the obscurity with this code implemented primarily through formatting and function substition.
 
As such, the first step in evaluating the working of this code would be to reformat it, remove redundant brackets (introduced deliberately to obscure the code and also 'pad' out the code to fit the raven-bird shape) and add some whitespace so that it is more readable:
$_ = ' $_ = y(x($;) + x($;) + x($;) + x($;)) . y(x($;) + x($;) + x($;) + x($;) + z(y(x($")) . y(x($")))) +. y(x($") + x($") + x($") + x($") - x($;) + x($") - x($;) + +z(y(x($;)))) . y(x($;) + x($;)) + x($;) + x($;) - z(z(x($")) . y(x($"))) +. y(x($;) + x($;) + x($;) + x($;) + z(y(x($")) . y(x($")) . +y(x($")) . y(x($")))) . y(x($")) . y(x($") + z(y(x($;)) . y(x($;)))) . y(x($") + x($") + x($") - x($;) + x($") - x($;) + x($") - +x($;) + x($") - x($;) + z(y(x($;)))) . y(x($;) + x($;) + x($;) + x($") + z(y(x($;)))) . y(x($;) + x($;) + x($;) + x($;) - z(y(x($")))) . y(x($;) + x($;) + x($;) + x($;) + z(y(x($")) . y(x($")) . +y(x($")) . y(x($")))) . y(x($") + x($") + x($") + x($") - x($;) + x($") - x($;)) . y(x($")) . y(x($;) + x($;) + x($;) + x($;) + z(y(x($")) . y(x($")) . +y(x($")) . y(x($")))) . y(x($") + x($") + x($") + x($") - x($;) + x($") - x($;)) . y(x($") + x($") + x($") + x($") - x($;) + z(y(x($;)))) . y(x($")) . y(x($") + x($") + x($") - x($;) + x($") - x($;) + x($") - +x($;) + x($") - x($;) + z(y(x($;)) . y(x($;)))) . y(x($") + x($") + x($") + z(y(x($;)))) . y(x($") + x($;) + x($;) + x($") - z(y(x($;)) . y(x($;)))) +. y(x($") + x($") + x($") + x($") - x($;) + z(y(x($;)))) . y(x($;) + x($;) + x($;) + x($;) - z(y(x($")) . y(x($")))) +. y(x($")) . y(x($") + x($;) + x($")) . y(x($") + z(z(x($;)) . y(x($;)))) . y(x($") + x($") + x($") - x($;) + x($") - x($;) + x($") - +x($;) + z(y(x($;)) . y(x($;)))) . y(x($") + x($") + x($") + x($") - x($;) + z(y(x($;)))) . y(x($") + x($;) + x($;) + x($") - z(y(x($;)) . y(x($;)))) +. y(x($") + x($") + x($") + x($") - x($;) + z(y(x($;)))) . y(x($;) + x($;) + x($;) + x($;) + z(y(x($")) . y(x($")))) +. y(x($;) + x($;) + x($;) + x($;) - z(y(x($")) . y(x($")) . +y(x($")))) . y(x($;) + x($;) + x($;) + x($;) - z(y(x($")))) . y(x($;) + x($;) + x($;) + x($;) + z(y(x($")) . y(x($")))) +. y(x($") + x($") + x($") + x($") - x($;) + z(y(x($;)))) . y(x($") + x($") - x($;) + x($") - x($;) + x($") - x($;) + +z(y(x($;)) . y(x($")))) . y(x($") + x($;) + x($")) . y(x($") + z(y(x($;)) . y(x($;)))) . y(x($") - x($;) + x($") - x($;) + z(y($") . y($;))) . y(x($") + z(y(x($;)) . y(x($;)))); eval;'; s/x/ord/g; s/y/chr/g; s/z/length/g; eval;
As you can see, in terms of cool coding tricks, there isn't too much to this code. Essentially, the code to print the line "Quoth the Raven "Nevermore."" is evaluated from $_ after having a series of three substitutions to have the characters x, y and z of this string replaced with the functions ord, chr and length respectively.
s/x/ord/g; s/y/chr/g; s/z/length/g;
These substitions result in the value of $_ to be assigned as follows:
$_ = ' $_ = chr(ord($;) + ord($;) + ord($;) + ord($;)) . chr(ord($;) + ord($;) + ord($;) + ord($;) + length(chr(ord +($")) . chr(ord($")))) . chr(ord($") + ord($") + ord($") + ord($") - ord($;) + ord( +$") - ord($;) + length(chr(ord($;)))) . chr(ord($;) + ord($;)) + ord($;) + ord($;) - length(length +(ord($")) . chr(ord($"))) . chr(ord($;) + ord($;) + ord($;) + ord($;) + length(chr(ord +($")) . chr(ord($")) . chr(ord($")) . chr(ord($")))) . chr(ord($")) . chr(ord($") + length(chr(ord($;)) . chr(ord($;)))) . chr(ord($") + ord($") + ord($") - ord($;) + ord($") - ord( +$;) + ord($") - ord($;) + ord($") - ord($;) + length(chr(ord($;)))) . chr(ord($;) + ord($;) + ord($;) + ord($") + length(chr(ord +($;)))) . chr(ord($;) + ord($;) + ord($;) + ord($;) - length(chr(ord +($")))) . chr(ord($;) + ord($;) + ord($;) + ord($;) + length(chr(ord +($")) . chr(ord($")) . chr(ord($")) . chr(ord($")))) . chr(ord($") + ord($") + ord($") + ord($") - ord($;) + ord( +$") - ord($;)) . chr(ord($")) . chr(ord($;) + ord($;) + ord($;) + ord($;) + length(chr(ord +($")) . chr(ord($")) . chr(ord($")) . chr(ord($")))) . chr(ord($") + ord($") + ord($") + ord($") - ord($;) + ord( +$") - ord($;)) . chr(ord($") + ord($") + ord($") + ord($") - ord($;) + leng +th(chr(ord($;)))) . chr(ord($")) . chr(ord($") + ord($") + ord($") - ord($;) + ord($") - ord( +$;) + ord($") - ord($;) + ord($") - ord($;) + length(chr(ord($;)) . c +hr(ord($;)))) . chr(ord($") + ord($") + ord($") + length(chr(ord($;)))) . chr(ord($") + ord($;) + ord($;) + ord($") - length(chr(ord +($;)) . chr(ord($;)))) . chr(ord($") + ord($") + ord($") + ord($") - ord($;) + leng +th(chr(ord($;)))) . chr(ord($;) + ord($;) + ord($;) + ord($;) - length(chr(ord +($")) . chr(ord($")))) . chr(ord($")) . chr(ord($") + ord($;) + ord($")) . chr(ord($") + length(length(ord($;)) . chr(ord($;)))) . chr(ord($") + ord($") + ord($") - ord($;) + ord($") - ord( +$;) + ord($") - ord($;) + length(chr(ord($;)) . chr(ord($;)))) . chr(ord($") + ord($") + ord($") + ord($") - ord($;) + leng +th(chr(ord($;)))) . chr(ord($") + ord($;) + ord($;) + ord($") - length(chr(ord +($;)) . chr(ord($;)))) . chr(ord($") + ord($") + ord($") + ord($") - ord($;) + leng +th(chr(ord($;)))) . chr(ord($;) + ord($;) + ord($;) + ord($;) + length(chr(ord +($")) . chr(ord($")))) . chr(ord($;) + ord($;) + ord($;) + ord($;) - length(chr(ord +($")) . chr(ord($")) . chr(ord($")))) . chr(ord($;) + ord($;) + ord($;) + ord($;) - length(chr(ord +($")))) . chr(ord($;) + ord($;) + ord($;) + ord($;) + length(chr(ord +($")) . chr(ord($")))) . chr(ord($") + ord($") + ord($") + ord($") - ord($;) + leng +th(chr(ord($;)))) . chr(ord($") + ord($") - ord($;) + ord($") - ord($;) + ord( +$") - ord($;) + length(chr(ord($;)) . chr(ord($")))) . chr(ord($") + ord($;) + ord($")) . chr(ord($") + length(chr(ord($;)) . chr(ord($;)))) . chr(ord($") - ord($;) + ord($") - ord($;) + length(chr($") + . chr($;))) . chr(ord($") + length(chr(ord($;)) . chr(ord($;)))); eval;'; eval;
Interpolating the values of $;, the subscript separator for multi-dimensional arrays, normally chr(28), and $", the output separator for array values interpolated in a double-quoted string, normally chr(32), results in the following code:
$_ = ' $_ = chr(28 + 28 + 28 + 28) . chr(28 + 28 + 28 + 28 + length(chr(32) . chr(32))) . chr(32 + 32 + 32 + 32 - 28 + 32 - 28 + length(chr(28))) . chr(28 + 28 + 28 + 28 - length(length(32) . chr(32))) . chr(28 + 28 + 28 + 28 + length(chr(32) . chr(32) . chr(32) + . chr(32))) . chr(32) . chr(32 + length(chr(28) . chr(28))) . chr(32 + 32 + 32 - 28 + 32 - 28 + 32 - 28 + 32 - 28 + leng +th(chr(28))) . chr(28 + 28 + 28 + 32 + length(chr(28))) . chr(28 + 28 + 28 + 28 - length(chr(32))) . chr(28 + 28 + 28 + 28 + length(chr(32) . chr(32) . chr(32) + . chr(32))) . chr(32 + 32 + 32 + 32 - 28 + 32 - 28) . chr(32) . chr(28 + 28 + 28 + 28 + length(chr(32) . chr(32) . chr(32) + . chr(32))) . chr(32 + 32 + 32 + 32 - 28 + 32 - 28) . chr(32 + 32 + 32 + 32 - 28 + length(chr(28))) . chr(32) . chr(32 + 32 + 32 - 28 + 32 - 28 + 32 - 28 + 32 - 28 + leng +th(chr(28) . chr(28))) . chr(32 + 32 + 32 + length(chr(28))) . chr(32 + 28 + 28 + 32 - length(chr(28) . chr(28))) . chr(32 + 32 + 32 + 32 - 28 + length(chr(28))) . chr(28 + 28 + 28 + 28 - length(chr(32) . chr(32))) . chr(32) . chr(32 + 28 + 32) . chr(32 + length(length(28) . chr(28))) . chr(32 + 32 + 32 - 28 + 32 - 28 + 32 - 28 + length(chr(28) + . chr(28))) . chr(32 + 32 + 32 + 32 - 28 + length(chr(28))) . chr(32 + 28 + 28 + 32 - length(chr(28) . chr(28))) . chr(32 + 32 + 32 + 32 - 28 + length(chr(28))) . chr(28 + 28 + 28 + 28 + length(chr(32) . chr(32))) . chr(28 + 28 + 28 + 28 - length(chr(32) . chr(32) . chr(32) +)) . chr(28 + 28 + 28 + 28 - length(chr(32))) . chr(28 + 28 + 28 + 28 + length(chr(32) . chr(32))) . chr(32 + 32 + 32 + 32 - 28 + length(chr(28))) . chr(32 + 32 - 28 + 32 - 28 + 32 - 28 + length(chr(28) . ch +r(32))) . chr(32 + 28 + 32) . chr(32 + length(chr(28) . chr(28))) . chr(32 - 28 + 32 - 28 + length(chr($") . chr($;))) . chr(32 + length(chr(28) . chr(28))); eval; '; eval;
Or put more simply ...
$_ = '$_ = "print "Quoth the Raven. \"Nevermore.\""; eval' eval;
Eval, rinse, repeat!
 

 
Ooohhh, Rob no beer function well without!

In reply to Quoth the Raven - The Spoiler by rob_au
in thread Quoth the Raven by rob_au

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, details, 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, summary, 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.