in reply to Regexp::Keep (was: Variable-width negative lookbehind)
in thread Variable-width negative lookbehind

What my module does is change where PL_regstartp[0] is, and it does it based on PL_reginput. PL_reginput is set too late when a regex like /ab\Kc/ is used -- it's set after the 'a' is matched, but not after the 'b' is matched, because of the EVAL node right after it, so we're using an old value.

I've just fixed the module to get around this. Instead of /ab\Kc/ becoming /ab(?{Regexp::Keep::KEEP})c/, it becomes /ab.{0}(?{Regexp::Keep::KEEP})c/. This forces PL_reginput to be updated before the EVAL is entered.

_____________________________________________________
Jeff[japhy]Pinyan: Perl, regex, and perl hacker, who'd like a job (NYC-area)
s++=END;++y(;-P)}y js++=;shajsj<++y(p-q)}?print:??;