in reply to Look-Arounds in Regexes are Hard

I have found this can be a bit slow. Assuming $a doesn't start with a special regexp char, I prefer to do some loop unrolling (a technique explained in Mastering Regular Expressions (1st edition, never read the 2nd edition, I presume it to be there as well)). Say $a equals 'foo', I'd write it as:
/^[^f]*(?:f(?!oo)[^f]*)*$end/
This makes perl only do a lookahead on encountering an 'f' instead of any character, and reduces the need for the /s modifier.

It may look more complex, but I've made a habit of unrolling regexp loops, and now it's almost second nature to me.