Re: [PATCH] git-remote-mediawiki: Fix a bug in a regexp
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Jun 9, 2013, 05:21 UTC
- Message-ID
- <CAPig+cSCLsMQ3Xg9UKury41G0vHddnL1PVKBJL_N2amA9e0eyQ@mail.gmail.com>
- In-Reply-To
- <20130609025708.GB30393@sigill.intra.peff.net>
On Sat, Jun 8, 2013 at 10:57 PM, Jeff King <peff@peff.net> wrote:
Show 20 quoted lines
> On Sat, Jun 08, 2013 at 08:38:56PM +0200, Matthieu Moy wrote: > >> Célestin Matte <celestin.matte@ensimag.fr> writes: >> >> > In Perl, '\n' is not a newline, but instead a literal backslash followed by an >> > "n". As the output of "rev-list --first-parent" is line-oriented, what we want >> > here is a newline. >> >> This is right, but the code actually worked the way it was. I'm not >> sure, but my understanding is that '\n' is the string "backslash >> followed by n", but interpreted as a regexp, it is a newline. > > Yes, the relevant doc (from "perldoc -f split") is: > > The pattern "/PATTERN/" may be replaced with an expression to specify > patterns that vary at runtime. (To do runtime compilation only once, > use "/$variable/o".) > > So it is treating "\n" as an expression and compiling the regex each > time through ...
I read this as saying only that static /PATTERN/ can also be a composed /$PATTERN/. It does not indicate how string 'PATTERN' is treated, nor does any other part of "perldoc -f split" make special mention of string 'PATTERN'. In fact, the only explanation I found regarding string 'PATTERN' is in my Camel book (3rd edition, page 796) in a parenthesized comment:
(... if you supply a string instead of a regular expression, it'll be
interpreted as a regular expression anyway.)Show 11 quoted lines
>> The new code looks better than the old one, but the log message may be >> improved. > > Agreed. I think the best explanation is something like: > > Perl's split function takes a regex pattern argument. You can also > feed it an expression, which is then compiled into a regex at runtime. > It therefore works to pass your pattern via single quotes, but it is > much less obvious to a reader that the argument is meant to be a > regex, not a static string. Using the traditional slash-delimiters > makes this easier to read.
Sounds good to me.