Of note is that Perl in particular already has safeguards in place to prevent exponential catastrophes. At least for some large class of pathological patterns, it wonít match them very quickly, but neither will it explode in nearly the same way as more naÔve engines. The downside is that the required bookkeeping imposes a performance hit on all matching, which makes Perlís engine slower than that of languages with more naÔve engines, like Java. tilly wrote a great, long article on this subject some time ago.
Makeshifts last the longest.