Bug#601251: perl: /x modifier doesn't seem to make regex completely whitespace-insensitive
Niko Tyni
ntyni at debian.org
Mon Oct 25 08:32:56 UTC 2010
On Sun, Oct 24, 2010 at 09:49:05AM -0700, Britton Leo Kerin wrote:
> Package: perl
> Version: 5.10.0-19lenny2
> Severity: normal
> Given:
>
> $tdl = 'dir call netrw#Explore(<count>,0,0+<bang>0,<q-args>)
> '
>
> This doesn't die:
>
> $tdl =~ s/^( augroup | buffer | command | dir | environment | event |
> expression | file | shellcmd | function | help |
> highlight | mapping | menu | option | tag |
> tag_listfiles | var | custom | customlist ) \s+
> (.*)
> /
> $2/x or die "foo";
>
> But this does:
>
> $tdl =~ s/^( augroup | buffer | command | dir | environment | event |
> expression | file | shellcmd | function | help |
> highlight | mapping | menu | option | tag |
> tag_listfiles | var | custom | customlist )
> \s+
> (.*)
> /
> $2/x or die "foo";
>
> The only different is the \s+ is on a line by itself in the second case.
I can't quite reproduce this. As far as I can see, both of the
substitutions succeed (don't die) on the original string, but if applied
in the order you gave, the second one fails because the first one has
changed the string.
Could you please supply a test script as an attachment, and preferably
trim irrelevant parts to make it easier to see the actual problem? It's
possible that your inlining has broken some whitespace and hidden
the issue.
--
Niko Tyni ntyni at debian.org
More information about the Perl-maintainers
mailing list