Tricky... I hate to risk crying wolf, but there may be a Perl bug going on here.
I'm assuming that this is the beginning stage of a japh?
Although I haven't solved the problem, I'm posting a slightly more untangled version of the code (think of it as a preemptive deobfuscation) in order to make the problem a bit clearer.
On perl 5.6.1 on Linux, this code returns "func MAIN returns func B returns 1+C(2)", when by intuition it should return "func MAIN returns func B returns 1+2". On perl 5.6.1 on Windows, the program coredumps.
use strict;
print doFunc( "MAIN", "B(1)+C(2)" );
sub doFunc{
my ($theFunc, $rem) = @_;
my $re = &get_re($rem);
$rem =~ s/(\w+)\(($re)\)/&doFunc($1,$2)/eg;
return "func $theFunc returns $rem";
}
##
## When we're called with the initial
## state, return "1|2". Otherwise, return
## our input, quotemeta'd.
##
sub get_re {
my ($in) = @_;
if ($in eq "B(1)+C(2)") {
return '1|2';
}
else {
return quotemeta($in);
}
}
stephen
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|