sub split_delimited { my $input = shift; my $limit = shift; my @output; my $s = ''; my $t = ''; my $bracket_count = 0; my $build_var; $input =~ s/\n/ /gm; foreach ( split ( //, $input ) ) { $build_var .= $_; if (/\{/) { $bracket_count++; } elsif (/}/) { $bracket_count--; } elsif ( / / and $bracket_count == 0 ) { push @output, $build_var if ( $build_var and $build_var ne ' ' ); $build_var = ''; } } foreach (@output) { if (length($s) < $limit) { $s .= $_; } else { $t .= $_; } } return $s,$t; }