On Thu, Sep 30, 2010 at 17:25, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Jeff King <peff@xxxxxxxx> writes: > >> ... >> But we are unnecessarily compiling the sub-regexes each time. Not that >> this is probably a performance critical piece of code, but your "/o" is >> doing very little, and this is exactly the sort perl wankery that I find >> interesting. > > Well, isn't the _sole_ point of using qr// to optimize by avoiding > recompilation? ÂIf this is not a performance critical section of the code, > what is the point of this change? > > This [PATCH 13/16] and also [PATCH 12/16] rewrite strings using qr// but > the patterns thus compiled are used exactly once before the control leaves > the scope of the variables, so... The point is to use Perl's data-types for what they're supposed to be used for. In perl you *can* write: my $two = "1" + "1"; To get 2, but that's silly. You should just use integers instead of string coercion: my $two = 1 + 1; Similarly you *can* put regexes in strings, but perl has a first-class datatype for it, so you should do: my $rx = qr/foo/; Not: my $rx = "foo"; So it's just a change to use a better style. There are some tangible advantages to using qr// over qq// (also known as ""), e.g. Emacs and Vim will know to highlight the string as a regexp, and when the $rx is interpolated Perl won't need to recompile it because it can just add a pointer to the existing regex in the new pattern. But the main reason here is to not write code that looks like it targets Perl 5.5, but 5.8. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html