in reply to explain obfu code

You could also run it through Deparse to make it look a lot less ugly...that would by my first step.

perl -MO=Deparse


++$|; undef $/; $_ = $e || <ARGV>; tr/+-.<>[]//cd; foreach $a (']}', '[while($p[$p]){', '-$p[$p]--', '+$p[$p]++', ',$p[$p +]=ord(getc)', '.print(chr($p[$p]))', '<$p--', '>$p++') { s/\Q${\substr($a, 0, 1);}\E/${\substr($a, 1);}\n;/g; } eval $_;
Yick! What is this program supposed to do anyway?

Here's my second pass at looking at this. Look at the elements in the foreach loop. The left most character of the element is what is looked for in the replacement and the rest of the element it what a match is replaced with.

This input

[ < - ]
Produces this output
while($p[$p]){ ;$p-- ;$p[$p]-- ;} ;
Could this be a home brew macro language parser? jeffa agree's with this idea.

perl -l -e "eval pack('h*','072796e6470272f2c5f2c5166756279636b672');"

Replies are listed 'Best First'.
Re: Re: explain obfu code
by japhy (Canon) on Oct 02, 2001 at 03:20 UTC
    It's an interpreter for Brainfuck.

    Jeff[japhy]Pinyan: Perl, regex, and perl hacker.
    s++=END;++y(;-P)}y js++=;shajsj<++y(p-q)}?print:??;

Re: Re: explain obfu code
by broquaint (Abbot) on Oct 02, 2001 at 17:21 UTC
    Try piping this into it -
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++.>+++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++.>+++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++.>++++++++++.>-<
    There are more elegant ways of putting that, but it's brainfuck which is rarely elegant anyways.


    Note: the above spew was (as you've probably guessed) created by yet another BF script (which can be found here).

      I had never heard of BF -- I guess you do learn something new every day.

      Anyway, in the spirit of BF Golf, I shortened your code. *Grins*

      +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++.---------.----- --------------------------.++++.+++++++++++++++++++++++++++++ +++++.