I don't really grok the look-around assertion
Think of it as a subroutine call. The engine tries to match the sub pattern at the current location, but it current location doesn't change.
+------------ Matched at pos 0.
| +-------- Matched at pos 1.
| |+------- Matched at pos 2.
| || +----- Matched at pos 1.
| || |+---- Matched at pos 2.
| || ||+--- Matched at pos 3.
| || |||
v vv vvv
'abcd' =~ /a(?!BC)..d/ # Matches
Since the position on the outer regex isn't affected, replacements don't take what the sub expression matched into consideration.
my $s = 'abcd';
$s =~ s/a(?=bc)/x/; # xbcd
my $s = 'aefg';
$s =~ s/a(?=bc)/x/; # abcd
The substitution pattern in your version has one less \05. Is that intentional?
Yes. One less \05 is being replaced, so one less \05 should be added.
I'm not familiar enough with this code or its expected output to really tell when it's working or when I might introduce a subtle bug somewhere
Then I guess the next order of business is to figure out the code and write test cases.
-
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.
|