Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[perl #118047] "Replacement list is longer than search list" warning invalid in case of tr's /c flag used

75 views
Skip to first unread message

James E Keenan via RT

unread,
May 20, 2013, 7:06:05 PM5/20/13
to perl5-...@perl.org
On Sat May 18 07:42:56 2013, pa...@ucw.cz wrote:
>
> This is a bug report for perl from pa...@ucw.cz,
> generated with the help of perlbug 1.39 running under perl 5.14.2.
>
>
> -----------------------------------------------------------------
> [Please describe your issue here]
>
> A snippet like `use warnings; $a = 'abc'; $a =~ y// /c;` will
> produce a warning "Replacement list is longer than search list"
> even though in this case, the effective search list is the full
> character set, which is longer than the replacement list.
>
> Perl should either first produce the complement before checking
> for this warning, or do not warn in case of the /c flag at all.
>
> I have also tested this with Perl-5.16.0 and the issue is present
> there as well.
>
>

Phenomenon confirmed on 5.18.0. This will need diagnosis by someone who
understands function S_pmtrans in op.c.

Thank you very much.
Jim Keenan


---
via perlbug: queue: perl5 status: new
https://rt.perl.org:443/rt3/Ticket/Display.html?id=118047

pasky @ ucw . cz

unread,
May 18, 2013, 10:42:56 AM5/18/13
to bugs-bi...@rt.perl.org
# New Ticket Created by pa...@ucw.cz
# Please include the string: [perl #118047]
# in the subject line of all future correspondence about this issue.
# <URL: https://rt.perl.org:443/rt3/Ticket/Display.html?id=118047 >



This is a bug report for perl from pa...@ucw.cz,
generated with the help of perlbug 1.39 running under perl 5.14.2.


-----------------------------------------------------------------
[Please describe your issue here]

A snippet like `use warnings; $a = 'abc'; $a =~ y// /c;` will
produce a warning "Replacement list is longer than search list"
even though in this case, the effective search list is the full
character set, which is longer than the replacement list.

Perl should either first produce the complement before checking
for this warning, or do not warn in case of the /c flag at all.

I have also tested this with Perl-5.16.0 and the issue is present
there as well.



[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
category=core
severity=low
---
Site configuration information for perl 5.14.2:

Configured by Debian Project at Wed Apr 10 16:58:16 UTC 2013.

Summary of my perl5 (revision 5 version 14 subversion 2) configuration:

Platform:
osname=linux, osvers=3.2.0-4-amd64, archname=x86_64-linux-gnu-thread-multi
uname='linux madeleine 3.2.0-4-amd64 #1 smp debian 3.2.39-2 x86_64 gnulinux '
config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.14 -Darchlib=/usr/lib/perl/5.14 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.14.2 -Dsitearch=/usr/local/lib/perl/5.14.2 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.14.2 -des'
hint=recommended, useposix=true, d_sigaction=define
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=define, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O2 -g',
cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include'
ccversion='', gccversion='4.7.2', gccosandvers=''
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
libpth=/usr/local/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /usr/lib
libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
perllibs=-ldl -lm -lpthread -lc -lcrypt
libc=, so=so, useshrplib=true, libperl=libperl.so.5.14.2
gnulibc_version='2.13'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib -fstack-protector'

Locally applied patches:


---
@INC for perl 5.14.2:
/home/pasky/perl5/lib/perl5/x86_64-linux-gnu-thread-multi
/home/pasky/perl5/lib/perl5/x86_64-linux-gnu-thread-multi
/home/pasky/perl5/lib/perl5
/etc/perl
/usr/local/lib/perl/5.14.2
/usr/local/share/perl/5.14.2
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.14
/usr/share/perl/5.14
/usr/local/lib/site_perl
.

---
Environment for perl 5.14.2:
HOME=/home/pasky
LANG=en_US.utf8
LANGUAGE=
LC_COLLATE=POSIX.utf8
LC_CTYPE=cs_CZ.utf8
LC_MEASUREMENT=cs_CZ.utf8
LC_MONETARY=cs_CZ.utf8
LC_NUMERIC=cs_CZ.utf8
LC_TIME=cs_CZ.utf8
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/home/pasky/perl5/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
PERL5LIB=/home/pasky/perl5/lib/perl5/x86_64-linux-gnu-thread-multi:/home/pasky/perl5/lib/perl5
PERL_BADLANG (unset)
PERL_LOCAL_LIB_ROOT=/home/pasky/perl5
PERL_MB_OPT=--install_base /home/pasky/perl5
PERL_MM_OPT=INSTALL_BASE=/home/pasky/perl5
SHELL=/bin/bash

Father Chrysostomos via RT

unread,
Jun 19, 2013, 11:42:29 PM6/19/13
to perl5-...@perl.org
On Mon May 20 16:06:05 2013, jkeenan wrote:
> On Sat May 18 07:42:56 2013, pa...@ucw.cz wrote:
> >
> > This is a bug report for perl from pa...@ucw.cz,
> > generated with the help of perlbug 1.39 running under perl 5.14.2.
> >
> >
> > -----------------------------------------------------------------
> > [Please describe your issue here]
> >
> > A snippet like `use warnings; $a = 'abc'; $a =~ y// /c;` will
> > produce a warning "Replacement list is longer than search list"
> > even though in this case, the effective search list is the full
> > character set, which is longer than the replacement list.
> >
> > Perl should either first produce the complement before checking
> > for this warning, or do not warn in case of the /c flag at all.
> >
> > I have also tested this with Perl-5.16.0 and the issue is present
> > there as well.
> >
> >
>
> Phenomenon confirmed on 5.18.0. This will need diagnosis by someone who
> understands function S_pmtrans in op.c.

I stopped it from warning yesterday, in commit b8c388a94dc7, but I
forgot to update this ticket till now.

--

Father Chrysostomos


---
via perlbug: queue: perl5 status: open
https://rt.perl.org:443/rt3/Ticket/Display.html?id=118047
0 new messages