in reply to @arrys & Non exact searches.

I've used this trick before (even though it goes against advice I just gave on another question ... well, the situation's different here, so ...)

Once you've split the search terms up, you might try joining 'em back together with a pipe | which will allow you to write a simple regex to match any of your search terms.

I'm going to assume that each element of @names is a full name. What you want, I take it, is a list of the names which match your disjunctive search (you're doing this by updating a global variable ... it's much cleaner to return the list of matches from the sub, that way lies less confusion; this routine returns a list of matches; as written, it also expects to be passed what the user entered in the search form.)

sub search { my $terms = shift; my $pattern = join "|", split /\s+/, $terms; my @matches = $FORM{case} eq 'insensitive' ? grep {/$pattern/i} @names : grep { /$pattern/ } @names; return \@matches; }


Philosophy can be made out of anything. Or less -- Jerry A. Fodor