On Sun, 9 Nov 2008, Junio C Hamano wrote: > Ian Hilt <ian.hilt@xxxxxxx> writes: > > > On Sun, 9 Nov 2008, Francis Galiegue wrote: > >> Le Sunday 09 November 2008 13:59:48 Ian Hilt, vous avez écrit : > >> > + if ($c_file =~ /^To:\s*+(.+)\s*\nCc:/ism) { > >> > >> Greedy operators are only supported with perl 5.10 or more... I think it's a > >> bad idea to use them... > > > > The problem here was that a space should follow the field, but it may > > not. The user may unwarily backup over it. "\s*" would match this > > case. > > > > But if there is a space, it is included in the "(.+)". So I tried > > "\s+", which did not include the space, but it won't include the first > > address if there isn't a space after the field. > > > > The quantified subpattern seemed to do the trick. But, if it could > > result in a dependency issue, I would agree this would be a bad idea. > > You expect something non-blank there anyway, so why not do: > > To:\s*(\S.*?)\s*\n.... That works. Although, I seem to be missing Francis' point. According to perlre, a quantified subpattern is "greedy". So a "greedy operator" is any one of the standard quantified subpatterns. The "+" and "?" modify its matching behavior. And it seems to me that it _has_ to use a q.s. to work ...