I guess it depends on your data, but for random shortish strings (hundreds to thousands of them), I find that using raw joining is much faster to assemble the regex. And the resulting regex is also (much) faster to match. Please see Bencher::Scenario::RegexpAssemble if you're interested in the benchmark script.
Rather that loop through an array of Regexps looking for a match, this module allows for one to combine them all into one Regexp. This makes code much cleaner and easier to maintain. It is an excellent module.
Note that I'm not sure how well optimized the combined Regexp is compared to iterating through a loop, but for my purposes this hasn't been a concern.