++$|;
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?
Updated
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.
/\/\averick
perl -l -e "eval pack('h*','072796e6470272f2c5f2c5166756279636b672');"
|