Skip Menu |
Report information
Id: 3697
Status: open
Priority: 0/
Queue: perl5

Owner: stmpeters <steve [at] fisharerojo.org>
Requestors: abigail <abigail [at] foad.org>
Cc:
AdminCc:

Operating System: Linux
PatchStatus: (no value)
Severity: Wishlist
Type: regex
Perl Version:
  • 5.6.0
  • 5.11.0
  • 5.20.0
Fixed In: (no value)



From: <abigail [...] foad.org>
Date: 15 Aug 2000 16:02:07 -0000
Subject: /(? :o)/: Sequence (? ...) not recognized, when using /x.
To: perlbug [...] perl.org
Download (untitled) / with headers
text/plain 3.5k
This is a bug report for perl from abigail@foad.org, generated with the help of perlbug 1.28 running under perl v5.6.0. ----------------------------------------------------------------- [Please enter your report here] $ perl -wle '"foo" =~ /(? :o)/x' /(? :o)/: Sequence (? ...) not recognized $ But 'man perlre' writes: The `/x' modifier itself needs a little more explanation. It tells the regular expression parser to ignore whites­ pace that is neither backslashed nor within a character class. You can use this to break up your regular expres­ sion into (slightly) more readable parts. Either the doc is wrong, or the regular expression parser. Fixing the docs is easiest, but fixing the parser is the most useful. (It's useful if you have a 10k regex you want to print out, and put some linebreaks in them). The Camel III doesn't mention the restriction on placing whitspace either. [Please do not change anything below this line] ----------------------------------------------------------------- --- Flags: category=core severity=low --- Site configuration information for perl v5.6.0: Configured by abigail at Wed Jun 14 21:00:02 EDT 2000. Summary of my perl5 (revision 5.0 version 6 subversion 0) configuration: Platform: osname=linux, osvers=2.2.13, archname=i686-linux-64int uname='linux alexandra 2.2.13 #5 tue feb 8 15:37:54 est 2000 i686 unknown ' config_args='-Dprefix=/opt/perl -d -Uinstallusrbinperl -Doptimize=-g -Dusemorebits' hint=recommended, useposix=true, d_sigaction=define usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef useperlio=undef d_sfio=undef uselargefiles=define use64bitint=define use64bitall=undef uselongdouble=define usesocks=undef Compiler: cc='cc', optimize='-g', gccversion=2.95.2 19991024 (release) cppflags='-DDEBUGGING -fno-strict-aliasing -I/usr/local/include' ccflags ='-DDEBUGGING -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' stdchar='char', d_stdstdio=define, usevfork=false intsize=4, longsize=4, ptrsize=4, doublesize=8 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 ivtype='long long', ivsize=8, nvtype='long double', nvsize=12, Off_t='off_t', lseeksize=8 alignbytes=4, usemymalloc=n, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lnsl -lndbm -lgdbm -ldbm -ldb -ldl -lm -lc -lposix -lcrypt libc=/lib/libc-2.1.2.so, so=so, useshrplib=false, libperl=libperl.a Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic' cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib' Locally applied patches: --- @INC for perl v5.6.0: /home/abigail/Perl /home/abigail/Sybase /opt/perl/lib/5.6.0/i686-linux-64int /opt/perl/lib/5.6.0 /opt/perl/lib/site_perl/5.6.0/i686-linux-64int /opt/perl/lib/site_perl/5.6.0 /opt/perl/lib/site_perl/5.005 /opt/perl/lib/site_perl . --- Environment for perl v5.6.0: HOME=/home/abigail LANG (unset) LANGUAGE (unset) LD_LIBRARY_PATH=/home/abigail/Lib:/usr/local/lib:/usr/lib:/lib:/usr/X11R6/lib:/opt/tcl/lib:/opt/tk/lib/tk8.0 LOGDIR (unset) PATH=/home/abigail/Bin:/opt/perl/bin:/opt/tcl/bin:/opt/tk/bin:/usr/local/bin:/usr/local/X11/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/games:/opt/povray/bin:/opt/teTeX/bin/i686-pc-linux-gnu:/opt/python/bin PERL5LIB=/home/abigail/Perl:/home/abigail/Sybase PERLDIR=/opt/perl PERL_BADLANG (unset) SHELL=/bin/bash
To: perl5-porters [...] perl.org
Cc: abigail [...] foad.org
Subject: Re: [ID 20000815.009] /(? :o)/: Sequence (? ...) not recognized, when using /x.
Date: Tue, 22 Aug 2000 11:12:22 +0100
From: Hugo <hv [...] crypt.compulink.co.uk>
Download (untitled) / with headers
text/plain 502b
In <20000815160207.13763.qmail@foad.org>, abigail@foad.org writes: : $ perl -wle '"foo" =~ /(? :o)/x' : /(? :o)/: Sequence (? ...) not recognized : $ Hmm, how far do we want to go with this? Anything in regcomp.c that directly increments PL_regcomp_parse rather than calling nextchar(), or reads beyond the character it currently points to could be perceived as a bug here. That means all the (? parsing, and others such as /a{1 }/x. It also begs questions around '.{1 0}' and '\1 0'. Hugo
From: Mike Guy <mjtg [...] cam.ac.uk>
Subject: Re: [ID 20000815.009] /(? :o)/: Sequence (? ...) not recognized, when using /x.
To: perl5-porters [...] perl.org
Date: Wed, 23 Aug 2000 17:27:16 +0100
Download (untitled) / with headers
text/plain 746b
Hugo <hv@crypt.compulink.co.uk> wrote Show quoted text
> In <20000815160207.13763.qmail@foad.org>, abigail@foad.org writes: > : $ perl -wle '"foo" =~ /(? :o)/x' > : /(? :o)/: Sequence (? ...) not recognized > : $ > > Hmm, how far do we want to go with this? Anything in regcomp.c that > directly increments PL_regcomp_parse rather than calling nextchar(), > or reads beyond the character it currently points to could be > perceived as a bug here. That means all the (? parsing, and others > such as /a{1 }/x. It also begs questions around '.{1 0}' and '\1 0'.
It should skip whitespace almost everywhere. I'd suggest the exceptions as within numbers (i.e. your two cases '.{1 0}' and '\1 0') within character classes after \ Mike Guy
Date: Wed, 23 Aug 2000 10:49:17 -0700 (PDT)
From: Jeffrey Friedl <jfriedl [...] yahoo-inc.com>
To: perl5-porters [...] perl.org
Cc: hv [...] crypt0.demon.co.uk
Subject: Re: [ID 20000815.009] /(? :o)/: Sequence (? ...) not recognized, when using /x.
Download (untitled) / with headers
text/plain 922b
Hugo wrote: |> In <20000815160207.13763.qmail@foad.org>, abigail@foad.org writes: |> : $ perl -wle '"foo" =~ /(? :o)/x' |> : /(? :o)/: Sequence (? ...) not recognized |> : $ |> |> Hmm, how far do we want to go with this? Anything in regcomp.c that |> directly increments PL_regcomp_parse rather than calling nextchar(), |> or reads beyond the character it currently points to could be |> perceived as a bug here. That means all the (? parsing, and others |> such as /a{1 }/x. It also begs questions around '.{1 0}' and '\1 0'. Using /x turns non-class whitespace that would otherwise match itself into metacharacters that are then ignored. Whitespace within /(? :o)/ or /x{1 }/ were never part of that, so it seems consistant to me that these examples remain syntax errors. But then, by that logic, it would seem consistant for /x? ?/x to remain a syntax error, but it's currently taken as /x??/. Jeffrey
From: Mike Guy <mjtg [...] cam.ac.uk>
Subject: Re: [ID 20000815.009] /(? :o)/: Sequence (? ...) not recognized, when using /x.
To: perl5-porters [...] perl.org
Date: Fri, 25 Aug 2000 14:19:43 +0100
Download (untitled) / with headers
text/plain 518b
Jeffrey Friedl <jfriedl@yahoo-inc.com> wrote Show quoted text
> Using /x turns non-class whitespace that would otherwise match itself into > metacharacters that are then ignored. Whitespace within > /(? :o)/ > or > /x{1 }/ > were never part of that, so it seems consistant to me that these examples > remain syntax errors.
That's thinking in terms of the implementation rather than the intent of /x. It's certainly not how it's documented. /x was intended to mean and should mean "ignore whitespace and # comments". Mike Guy


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

For issues related to this RT instance (aka "perlbug"), please contact perlbug-admin at perl.org