Re: [PATCHES] [HACKERS] MSVC build broken with perl 5.10

2008-04-15 Thread Andrew Dunstan



Zeugswetter Andreas OSB SD wrote:

Magnus Hagander wrote:
  

I just tried the MSVC build on a system with ActiveState Perl 5.10,


and
  

it doesn't work. Some quick debugging before I downgraded to 5.8


showed
  

that this regexp in Project.pm line 262:
my $replace_re = qr{^([^:\n\$]+\.c)\s*:\s*(?:%\s*:


)?\$(\([^\)]+\))\/(.*)\/[^\/]+$};
  

matches things properly using Perl 5.8 in for example
src/bin/initdb/Makefile (matches a total of around 10 Makefiles), but
in 5.10 it simply does not match anything...

Any perl guru out there who can comment on why? ;-)



The answer is actually simple, the \n needs the multiline modifier,
and thus the m needs to be part of the quote-like operator.

The perl doc states:
"This operator quotes (and possibly compiles) its STRING"
(it seems 5.8 did not compile, but 5.10 does)

I feel that it is rather not a perl bug, and that the modifiers need to
be put
on the qr{}. I do not quite see why this re needs to be multiline in the
first place,
but I have not touched that in the attached patch, that is ready to
apply.
(modification works in perl 5.6, 5.8, 5.10)

  



Thanks, that makes sense. I wonder how it ever worked before. Anyway, 
patch applied back as far as 8.2.


cheers

andrew

--
Sent via pgsql-patches mailing list (pgsql-patches@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-patches


Re: [PATCHES] [HACKERS] MSVC build broken with perl 5.10

2008-04-15 Thread Zeugswetter Andreas OSB SD

Magnus Hagander wrote:
> I just tried the MSVC build on a system with ActiveState Perl 5.10,
and
> it doesn't work. Some quick debugging before I downgraded to 5.8
showed
> that this regexp in Project.pm line 262:
> my $replace_re = qr{^([^:\n\$]+\.c)\s*:\s*(?:%\s*:
)?\$(\([^\)]+\))\/(.*)\/[^\/]+$};
> 
> matches things properly using Perl 5.8 in for example
> src/bin/initdb/Makefile (matches a total of around 10 Makefiles), but
> in 5.10 it simply does not match anything...
> 
> Any perl guru out there who can comment on why? ;-)

The answer is actually simple, the \n needs the multiline modifier,
and thus the m needs to be part of the quote-like operator.

The perl doc states:
"This operator quotes (and possibly compiles) its STRING"
(it seems 5.8 did not compile, but 5.10 does)

I feel that it is rather not a perl bug, and that the modifiers need to
be put
on the qr{}. I do not quite see why this re needs to be multiline in the
first place,
but I have not touched that in the attached patch, that is ready to
apply.
(modification works in perl 5.6, 5.8, 5.10)

Andreas


Project.pm.patch
Description: Project.pm.patch

-- 
Sent via pgsql-patches mailing list (pgsql-patches@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-patches