Its apparently the same penalty incurred on a per-regex basis by using capturing. While working with Metacode::Reader I was able to get some very nice speedups by removing everything that copies data around. So instead of /H=(\d+)$/ I had substr $_, $-[0] + 2, $+[0] - $-[0] - 3. This is much less clear and not nice to read. In my case I was writing a high volumn database filter and the obfuscation was ok. I don't advocate at all taking this sort of step outside of really critical code that Devel::DProf has already highlighted as being slow.