http://qs321.pair.com?node_id=11138984


in reply to Re^3: Problem with regex is a bug? or my regex (updated)
in thread Problem with regex is a bug? or my regex

Strange, I can reproduce in my machine, I upgraded to 1.35 and now its broken.
hans@hans-desktop ~ perl -MExpect -e 'print $Expect::VERSION ."\n";' 1.35 hans@hans-desktop ~ perl test.pl Match before : ####################################################### +#######################\r\n# This system is a restricted access syste +m. Match : # Match after : \r\n# If collected security information reveals possibl +e criminal activity that #\r\n# exceeds privileges, evidence of such + activity may be provided to the rele- #\r\n# vantauthorities for fur +ther action. By continuing past this point, you #\r\n# expressly cons +ent to this security monitoring. #\r\n################## +############################################################\r\n\r\nh +ostname: ~#

Replies are listed 'Best First'.
Re^5: Problem with regex is a bug? or my regex
by haukex (Archbishop) on Nov 20, 2021 at 15:47 UTC

    I checked and can now confirm that the version where the behavior of your test script changes is Expect v1.26, which is where I quoted the Changelog entry from above. Specifically, it's commits 7ee4816 and d9e0365 that each change the behavior of your script.

    The problem actually turns out to be fairly simple: The position of a capturing group was changed. Previously, the module did /$pattern->[2]()/ where it now does /($pattern->[2])/, which changes the ordering of the capture groups and which breaks your \2 backreference. Change the backreference to \g-1 and your regex should work even on the newest version of Expect (at least my testing shows that it does).

      Thank you very much, it does work perfect.