use 5.010; my $string = q(foo); my @patterns = map { qr/$_/i } qw( foo ba(r|z) quux ); say @patterns; if( $string ~~ @patterns ) { say q(matched); } #### gizmo@veterok: [~/dev/smart_match_regex_test] $ ./test.pl (?i-xsm:foo)(?i-xsm:ba(r|z))(?i-xsm:quux)