use 5.010; # re features use strict; use warnings; for ('abcdef') { m{ (?(DEFINE) (? (? . ) (? . ) (?{ '...' }) ) (? (? . ) (? . ) (?{ print("($+{i1},$+{i2})") }) ) (? (? . ) (? . ) (?{ '...' }) ) ) (?&y)+ }x; } print("\n");