CHUNK: while ( ( my $pos = pos $sentence ) < length $sentence ) { for my $phrase ( @phrases ) { if ( my $index = index($sentence, $phrase ) >= $pos ) { my $length = length $phrase; substr($sentence, $index + $length, 0, '#'); substr($sentence, $index, 0, '#'); pos $sentence = $index + $length + 2; next CHUNK; } } last CHUNK; } #### my @split = split /($phrase1|$phrase2)/, $sentence; @phrases = @split[map { 2 * $_ + 1 } 0 .. ($#split - 1)/2];