my @MATCH_RE = ( q%(?:this|or|that)%, ); my @MATCH_REC = map { qr/$_/ } @MATCH_RE; sub doit { my($str) = @_; for my $re (@MATCH_REC) { return 0 if $str =~ m%$re%i; } return 1; } #### my @SUB_RE = ( q@%(?:this|or|that)%bob%gsi@, q@%(?:One|Two|Three)%Four%gs@, # note different modifier ); # or, with 's' embedded my @SUB_RE2 = ( q@s%(?:this|or|that)%bob%gsi@, q@s%(?:One|Two|Three)%Four%gs@, # note different modifier ); my @SUB_REC = map { qr/$_/ } @SUB_RE; sub doit { my($str) = @_; for my $re (@SUB_REC) { $str =~ $re; } return $str; }