This always happens in a constant regular expression, and in fact, the pattern was compiled into the internal format at the same time your entire program was. Use of C is irrelevant unless variable interpolation is used in the pattern, and if so, the regexp engine will neither know nor care whether the variables change after the pattern is evaluated the I time. While this actually can be done, it's much harder than you'd think. You see, it's too simple-minded for certain kinds of C programs, in particular, those with what appear to be comments in quoted strings. You still need to use non-regexp techniques to parse balanced text, such as the text enclosed between matching parentheses or braces, for example.
Most people mean that greedy regexps match as much as they can.
The C quantifier effectively tells the regular expression engine to find a match as quickly as possible and pass control on to whatever is next in line, like you would if you were playing hot potato. To do this, you have to parse out each word in the input stream. That's because Perl has to recompile all those patterns for each of the lines of the file. Two common misconceptions are that C is a synonym for C , and that it's the edge between whitespace characters and non-whitespace characters. Neither is correct.