my @chunks = ($string =~ /(?|(?:((?:[^\n]*\n){19}[^\n]*)\n)|((?s:.*)))/g); print Dumper @chunks[0]; #### Sequence (?|...) not recognized in regex; marked by <-- HERE in m/(?| <-- HERE (?:((?:[^\n]*\n){19}[^\n]*)\n)|((?s:.*)))/.