List Info

Thread: Case-insensitive modifier breaks multi-line s///




Case-insensitive modifier breaks multi-line s///
user name
2007-08-31 09:16:07
# New Ticket Created by  phrdoc.ic.ac.uk 
# Please include the string:  [perl #45087]
# in the subject line of all future correspondence about
this issue. 
# <URL: h
ttp://rt.perl.org/rt3/Ticket/Display.html?id=45087 >



This is a bug report for perl from phrdoc.ic.ac.uk,
generated with the help of perlbug 1.35 running under perl
v5.8.8.


------------------------------------------------------------
-----
[Please enter your report here]

This is a program fragment showing the problem:

---- cut ----
#!/usr/bin/perl -w

$data = q/1.0    PTR mach1.example.com.
2.0    PTR mach2.example.com.
3.0    PTR mach3.example.com.
/;

print "matchesn" if (
        $data =~ m/
                ^1..+1.example.com.$ n
                ^2..+2.example.com.$ n
                /mix
                # m (^$ match any line)
                # i (case insensitive)
                # x (extended syntax)
)
---- cut ----

$data is a fragment of a reverse zonefile. I was trying to
collapse
multiple lines into a single $GENERATE when I found the
regex not matching
as I'd expect.

By removing the "i" (case insensitive) modifier,
the regex matches. I've
stared at the output of "use re 'debug'" but don't
understand it well
enough.

[Please do not change anything below this line]
------------------------------------------------------------
-----
---
Flags:
    category=core
    severity=medium
---
Site configuration information for perl v5.8.8:

Configured by Debian Project at Fri Jul  7 18:20:22 UTC
2006.

Summary of my perl5 (revision 5 version 8 subversion 8)
configuration:
  Platform:
    osname=linux, osvers=2.6.15.7,
archname=i486-linux-gnu-thread-multi
    uname='linux rothera 2.6.15.7 #1 smp tue jun 27 18:34:43
utc 2006 i686 gnulinux '
    config_args='-Dusethreads -Duselargefiles
-Dccflags=-DDEBIAN -Dcccdlflags=-fPIC
-Darchname=i486-linux-gnu -Dprefix=/usr
-Dprivlib=/usr/share/perl/5.8 -Darchlib=/usr/lib/perl/5.8
-Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5
-Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local
-Dsitelib=/usr/local/share/perl/5.8.8
-Dsitearch=/usr/local/lib/perl/5.8.8
-Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3
-Dsiteman1dir=/usr/local/man/man1
-Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1
-Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs
-Ud_csh -Uusesfio -Uusenm -Duseshrplib
-Dlibperl=libperl.so.5.8.8 -Dd_dosuid -des'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=define use5005threads=undef
useithreads=define usemultiplicity=define
    useperlio=define d_sfio=undef uselargefiles=define
usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE
-DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe
-I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64',
    optimize='-O2',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS
-DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include'
    ccversion='', gccversion='4.1.2 20060613 (prerelease)
(Ubuntu 4.1.1-2ubuntu5)', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8,
byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define,
longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8,
Off_t='off_t', lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc
-lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=/lib/libc-2.4.so, so=so, useshrplib=true,
libperl=libperl.so.5.8.8
    gnulibc_version='2.4'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef,
ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared
-L/usr/local/lib'

Locally applied patches:
    

---
INC
for perl v5.8.8:
    /etc/perl
    /usr/local/lib/perl/5.8.8
    /usr/local/share/perl/5.8.8
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.8
    /usr/share/perl/5.8
    /usr/local/lib/site_perl
    .

---
Environment for perl v5.8.8:
    HOME=/home/phr
    LANG=C
    LANGUAGE=C
    LC_COLLATE=C
    LC_MONETARY=C
    LC_NUMERIC=C
    LC_TIME=C
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
   
PATH=/usr/local/symlinks:/usr/local/scripts:/usr/local/sbin:
/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/h
ome/phr/bin
    PERL_BADLANG (unset)
    SHELL=/bin/bash


Re: Case-insensitive modifier breaks multi-line s///
user name
2007-08-31 18:08:02
phrdoc.ic.ac.uk (via RT) wrote:
> This is a program fragment showing the problem:
> 
> ---- cut ----
> #!/usr/bin/perl -w
> 
> $data = q/1.0    PTR mach1.example.com.
> 2.0    PTR mach2.example.com.
> 3.0    PTR mach3.example.com.
> /;
> 
> print "matchesn" if (
>         $data =~ m/
>                 ^1..+1.example.com.$ n
>                 ^2..+2.example.com.$ n
>                 /mix
>                 # m (^$ match any line)
>                 # i (case insensitive)
>                 # x (extended syntax)
> )
> ---- cut ----
> 
> $data is a fragment of a reverse zonefile. I was trying
to collapse
> multiple lines into a single $GENERATE when I found the
regex not matching
> as I'd expect.
> 
> By removing the "i" (case insensitive)
modifier, the regex matches. I've
> stared at the output of "use re 'debug'" but
don't understand it well
> enough.

Thanks for your report.

I've confirmed this bug in 5.8.8.  bleadperl31752
shows it's been fixed.  The
fix will be in 5.10.


-- 
Ahh email, my old friend.  Do you know that revenge is a
dish that is best
served cold?  And it is very cold on the Internet!

[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )