These things never stop to stun me so here's my try at the decoding game :)

\@.=~/(?<=\w{3})(\w)(.(.))(7325,20)*/; @_=$1..$3.$3.$3;; @_=(' ',@_,0); 1055||13733*{0}.18^0.10964||12.0&&5437; open _, $0 ; do{ 7584, print$_[$1] while /(?<!\$)(\d+)[^\}]/g } while <_>
\@. is a reference to some undefined array named @.
it has a value of the form ARRAY(0x1824444)
On which you match and record the 4th letter with  (?<=\w{3})(\w) ;
Then you match  (.(.))
That's a regex record inside a record so $2 will hold the next two letter and $3 only the 6th, which is a ( .

Now $1..$3.$3.$3 ,as with the ".." operator, will create a list of all the letters from A to ((( . This will generate a list from A to ZZZ .
Interesting behavior, since 1- it ignores non letters and 2- it understands that it will iterate up to three letters words.
This list ends up in @_ with a space in front and a zero at the end.

Now for some calculous :

1055||13733*{0}.18^0.10964||12.0&&5437
returns 1055 , since it a first true in a short circuit. It does nothing else so it's just a line that sits here.

 open _,$0; opens the file itself ($0) into the _ filehandle.

While reading that filehandle we have each line in $_ ; on this we apply  /(?<!\$)(\d+)[^\}]/g

 (?<!\$)(\d+) will match a number but not (negative look behind) if it is preceded by a $ . This wont match things like $1 , $2 ...
That number will be recorded in $1 but only if it is not followed by a } or by a \ ( negated character class, the \ changes nothing ) .

The match is global and the while loop will run it over each line of the file.
Given the matching rules and the numbers present in the file, $1 will take these values :

  • 7325 and 20 from the first regexp
  • 0 from @_ = ( ' ', @_, 0)
  • 1055 13733 18 0 10964 12 0 5437 from that "useless" calculous line ;
  • 7584 from before the print .

    Each of these will be used to  print$_[$1] .

    And this is where it happens : that $_ is not coming from any of these while : it's a subscript from our previous @_ .

    @foo= 'A'..'ZZZ' ; @foo = (' ',@foo,0) ; print @foo[7325,20,0,1055,13733,18,0,10964,12,0,5437,7584] ;

    phew ... zlr .


    In reply to Re: slow generation by ZlR
    in thread slow generation by sh1tn

    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.