Nah, take a look at that via use re 'debug'. You'll see that /(?i:[A-Z])/ is /[A-Z]/i is /[A-Za-z]/. All three interpret identically. If you run the actual example through it you'll see its the same. I didn't know the answer to this prior to running these through re'debug' so I'm suggesting that great debug tools like this should be used more often especially when making assertions regarding relative performance. In this case all you win is some source code obfuscation since I hold that its easier to look at either (?i:[A-Z]) (which is really nice because it restricts the effects of /i to just that section or a tacked on /i. Having to be extra specific just makes it easier to type another bug.
| [reply] [d/l] [select] |
I think the assertion came from Jeff Friedl in this case (Mastering Regular Expressions, 1st ed, not sure about second). He says that the i modifier can be up to 20 times slower than a case specific match, if memory serves. I believe this was during Perl 5.4 though and right before a major regex overhaul. Nice to know it's no longer true.
| [reply] |