Attached is a patch with a todo test for this bug report. Summary of the report: #!/usr/bin/perl -l if ("A" =~ /(((?:A))?)+/) { print "\$1 = $1, \$2 = $2, \$3 = $3" } if ("A" =~ /(((A))?)+/) { print "\$1 = $1, \$2 = $2, \$3 = $3"; } __END__ Output: $1 = , $2 = , $3 = $1 = , $2 = A, $3 = A The value of the second capture group depends on wheter or not there is a third capturing group. The value should be the same in both cases. (For more info look at RT)