my $text = 'Perl is a general-purpose programming language originally developed for text manipulation and now used for a wide range of tasks including system administration, web development, network programming, GUI development, and more.'; # Text source: perlintro [http://perldoc.perl.org/perlintro.html] foreach my $keywords ( 'Perl development', 'Perl sucks', ) { $re = '^' . join '', map { "(?=.*\\b$_\\b)" } map quotemeta, split ' ', $keywords; print("$re\n"); print("$keywords: ", $text =~ /$re/ ? "match" : "no match", "\n"); } #### ^(?=.*\bPerl\b)(?=.*\bdevelopment\b) Perl development: match ^(?=.*\bPerl\b)(?=.*\bsucks\b) Perl sucks: no match