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