On Thu, Jul 14, 2005 at 03:52:45AM -0700, Michael G Schwern via RT wrote: > I believe this bug is fixed but I'd like to see a test added before > closing it. The regex tests scare me.
Here's one way. Line 614 of t/op/re_tests fits the bill. I'm a little disappointed that this patch didn't shake out any more bugs. I guess we're getting close to a bug-free regex engine. ;-) If you don't like having an extra 900+ tests then I suppose adding a line like: '$(?:)'m b\na\n y $-[0] 1 or (?m:$)(?:) b\na\n y $-[0] 1 to t/op/re_tests would suffice. But that doesn't test the embedding of a qr/pattern/m in another pattern. -- Rick Delaney [EMAIL PROTECTED] diff -ruN perl-current/t/op/regexp.t perl-current-dev/t/op/regexp.t --- perl-current/t/op/regexp.t 2004-11-04 05:56:08.000000000 -0500 +++ perl-current-dev/t/op/regexp.t 2005-07-14 09:11:33.293055207 -0400 @@ -74,7 +74,21 @@ $result =~ s/B//i unless $skip; for $study ('', 'study \$subject') { $c = $iters; - eval "$study; \$match = (\$subject =~ $OP$pat) while \$c--; \$got = \"$repl\";"; + if ($qr_embed) { + eval qq" + my \$RE = qr$pat; + $study; + \$match = (\$subject =~ /(?:)\$RE(?:)/) while \$c--; + \$got = \"$repl\"; + "; + } + else { + eval qq" + $study; + \$match = (\$subject =~ $OP$pat) while \$c--; + \$got = \"$repl\"; + "; + } chomp( $err = $@ ); if ($result eq 'c') { if ($err !~ m!^\Q$expect!) { print "not ok $. (compile) $input => `$err'\n"; next TEST } diff -ruN perl-current/t/op/regexp_qr_embed.t perl-current-dev/t/op/regexp_qr_embed.t --- perl-current/t/op/regexp_qr_embed.t 1969-12-31 19:00:00.000000000 -0500 +++ perl-current-dev/t/op/regexp_qr_embed.t 2005-07-14 09:56:24.497124417 -0400 @@ -0,0 +1,11 @@ +#!./perl + +$qr = 1; +$qr_embed = 1; +for $file ('./op/regexp.t', './t/op/regexp.t', ':op:regexp.t') { + if (-r $file) { + do $file; + exit; + } +} +die "Cannot find ./op/regexp.t or ./t/op/regexp.t\n";