use strict; use warnings; use Text::Balanced qw(extract_bracketed); my $text = '(aaa) (bbb (ccc( ddd) eee) (fff)' ; my @tokens = extract_bracketed($text, '()'); print "$_\n" for @tokens; # Output: #(aaa) # (bbb (ccc( ddd) eee) (fff)