I'd use a single search looking for both quoted strings and words, at once. My solution is related to the entry in perlfaq4:
How can I split a [character] delimited string except when inside [character]? (Comma-separated files). But mine is much simpler, because you don't seem to care about embedded/escaped quotes.
$_ = 'This is "the search" string "that was" supplied';
while(/"(.*?)"|(\S+)/g) {
if(defined $1) {
push @quotes, $1;
} else {
push @keywords, $2;
}
}