Skip Menu |
Report information
Id: 113090
Status: pending release
Priority: 0/
Queue: perl5

Owner: Nobody
Requestors: jimav <james_avera [at] yahoo.com>
Cc:
AdminCc:

Operating System: All
PatchStatus: HasPatch
Severity: Wishlist
Type:
Perl Version: 5.12.4
Fixed In: 5.27.7



Subject: Data::Dumper -- undef not recognized as "false" in config booleans
Date: Fri, 25 May 2012 21:30:31 -0700
To: perlbug [...] perl.org
From: Jim Avera <james_avera [...] yahoo.com>
Download (untitled) / with headers
text/plain 5.6k
This is a bug report for perl from james_avera@yahoo.com, generated with the help of perlbug 1.39 running under perl 5.12.4. ----------------------------------------------------------------- Some of Data::Dumper's configuration methods accept "boolean" arguments. However passing undef for "false" causes incorrect behavior (the methods return the old value rather than setting a new value). This is not a big deal, but if you want to make them accept undef as a valid form of "false", here is a patch: --- Dumper.pm 2012-05-26 04:25:18.236706958 +0000 +++ Dumper.pm.ORIG 2012-05-25 19:06:41.775175838 +0000 @@ -607,17 +607,17 @@ sub Purity { my($s, $v) = @_; - @_ >= 2 ? (($s->{purity} = $v), return $s) : $s->{purity}; + defined($v) ? (($s->{purity} = $v), return $s) : $s->{purity}; } sub Useqq { my($s, $v) = @_; - @_ >= 2 ? (($s->{useqq} = $v), return $s) : $s->{useqq}; + defined($v) ? (($s->{useqq} = $v), return $s) : $s->{useqq}; } sub Terse { my($s, $v) = @_; - @_ >= 2 ? (($s->{terse} = $v), return $s) : $s->{terse}; + defined($v) ? (($s->{terse} = $v), return $s) : $s->{terse}; } sub Freezer { @@ -632,12 +632,12 @@ sub Deepcopy { my($s, $v) = @_; - @_ >= 2 ? (($s->{deepcopy} = $v), return $s) : $s->{deepcopy}; + defined($v) ? (($s->{deepcopy} = $v), return $s) : $s->{deepcopy}; } sub Quotekeys { my($s, $v) = @_; - @_ >= 2 ? (($s->{quotekeys} = $v), return $s) : $s->{quotekeys}; + defined($v) ? (($s->{quotekeys} = $v), return $s) : $s->{quotekeys}; } sub Bless { @@ -652,17 +652,17 @@ sub Useperl { my($s, $v) = @_; - @_ >= 2 ? (($s->{'useperl'} = $v), return $s) : $s->{'useperl'}; + defined($v) ? (($s->{'useperl'} = $v), return $s) : $s->{'useperl'}; } sub Sortkeys { my($s, $v) = @_; - @_ >= 2 ? (($s->{'sortkeys'} = $v), return $s) : $s->{'sortkeys'}; + defined($v) ? (($s->{'sortkeys'} = $v), return $s) : $s->{'sortkeys'}; } sub Deparse { my($s, $v) = @_; - @_ >= 2 ? (($s->{'deparse'} = $v), return $s) : $s->{'deparse'}; + defined($v) ? (($s->{'deparse'} = $v), return $s) : $s->{'deparse'}; } # used by qquote below [Please do not change anything below this line] ----------------------------------------------------------------- --- Flags: category=library severity=wishlist module=Data::Dumper --- Site configuration information for perl 5.12.4: Configured by Debian Project at Tue Sep 6 08:08:24 UTC 2011. Summary of my perl5 (revision 5 version 12 subversion 4) configuration: Platform: osname=linux, osvers=2.6.24-28-server, archname=x86_64-linux-gnu-thread-multi uname='linux allspice 2.6.24-28-server #1 smp wed aug 18 21:17:51 utc 2010 x86_64 x86_64 x86_64 gnulinux ' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.12 -Darchlib=/usr/lib/perl/5.12 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.12.4 -Dsitearch=/usr/local/lib/perl/5.12.4 -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.12.4 -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 -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2 -g', cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include' ccversion='', gccversion='4.6.1', 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.12.4 gnulibc_version='2.13' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib -fstack-protector' Locally applied patches: --- @INC for perl 5.12.4: /home/jima/local/share/perl/5.12.4 /home/jima/local/share/perl /home/jima/lib/perl /etc/perl /usr/local/lib/perl/5.12.4 /usr/local/share/perl/5.12.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.12 /usr/share/perl/5.12 /usr/local/lib/site_perl . --- Environment for perl 5.12.4: HOME=/home/jima LANG=en_US.UTF-8 LANGUAGE (unset) LD_LIBRARY_PATH=/home/jima/local/lib LOGDIR (unset) PATH=/home/jima/bin:/home/jima/local/bin:/home/jima/jima_tools/x86_64/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/bin/X11:/usr/local/bin:/opt/openoffice.org3/program:/usr/local/games:/usr/games:. PERL5LIB=/home/jima/local/share/perl:/home/jima/lib/perl PERL_BADLANG (unset) SHELL=/bin/bash
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 6.3k
On Fri May 25 21:30:52 2012, jimav wrote: Show quoted text
> > This is a bug report for perl from james_avera@yahoo.com, > generated with the help of perlbug 1.39 running under perl 5.12.4. > > ----------------------------------------------------------------- > Some of Data::Dumper's configuration methods accept "boolean" > arguments. However passing undef for "false" causes incorrect > behavior (the methods return the old value rather than setting > a new value). > > This is not a big deal, but if you want to make them accept undef > as a valid form of "false", here is a patch:
I think this is a good idea, and that Freezer and Toaster should also get the same change, so that ->Freezer(undef) becomes the same as ->Freezer(""). Could you perhaps include some tests for this? Also, please note that your patch is reversed. :-) Show quoted text
> > --- Dumper.pm 2012-05-26 04:25:18.236706958 +0000 > +++ Dumper.pm.ORIG 2012-05-25 19:06:41.775175838 +0000 > @@ -607,17 +607,17 @@ > > sub Purity { > my($s, $v) = @_; > - @_ >= 2 ? (($s->{purity} = $v), return $s) : $s->{purity}; > + defined($v) ? (($s->{purity} = $v), return $s) : $s->{purity}; > } > > sub Useqq { > my($s, $v) = @_; > - @_ >= 2 ? (($s->{useqq} = $v), return $s) : $s->{useqq}; > + defined($v) ? (($s->{useqq} = $v), return $s) : $s->{useqq}; > } > > sub Terse { > my($s, $v) = @_; > - @_ >= 2 ? (($s->{terse} = $v), return $s) : $s->{terse}; > + defined($v) ? (($s->{terse} = $v), return $s) : $s->{terse}; > } > > sub Freezer { > @@ -632,12 +632,12 @@ > > sub Deepcopy { > my($s, $v) = @_; > - @_ >= 2 ? (($s->{deepcopy} = $v), return $s) : $s->{deepcopy}; > + defined($v) ? (($s->{deepcopy} = $v), return $s) : $s->{deepcopy}; > } > > sub Quotekeys { > my($s, $v) = @_; > - @_ >= 2 ? (($s->{quotekeys} = $v), return $s) : $s->{quotekeys}; > + defined($v) ? (($s->{quotekeys} = $v), return $s) : $s-
> >{quotekeys};
> } > > sub Bless { > @@ -652,17 +652,17 @@ > > sub Useperl { > my($s, $v) = @_; > - @_ >= 2 ? (($s->{'useperl'} = $v), return $s) : $s->{'useperl'}; > + defined($v) ? (($s->{'useperl'} = $v), return $s) : $s-
> >{'useperl'};
> } > > sub Sortkeys { > my($s, $v) = @_; > - @_ >= 2 ? (($s->{'sortkeys'} = $v), return $s) : $s->{'sortkeys'}; > + defined($v) ? (($s->{'sortkeys'} = $v), return $s) : $s-
> >{'sortkeys'};
> } > > sub Deparse { > my($s, $v) = @_; > - @_ >= 2 ? (($s->{'deparse'} = $v), return $s) : $s->{'deparse'}; > + defined($v) ? (($s->{'deparse'} = $v), return $s) : $s-
> >{'deparse'};
> } > > # used by qquote below > > > [Please do not change anything below this line] > ----------------------------------------------------------------- > --- > Flags: > category=library > severity=wishlist > module=Data::Dumper > --- > Site configuration information for perl 5.12.4: > > Configured by Debian Project at Tue Sep 6 08:08:24 UTC 2011. > > Summary of my perl5 (revision 5 version 12 subversion 4) > configuration: > > Platform: > osname=linux, osvers=2.6.24-28-server, > archname=x86_64-linux-gnu-thread-multi > uname='linux allspice 2.6.24-28-server #1 smp wed aug 18 21:17:51 > utc 2010 x86_64 x86_64 x86_64 gnulinux ' > config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN > -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr > -Dprivlib=/usr/share/perl/5.12 -Darchlib=/usr/lib/perl/5.12 > -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 > -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local > -Dsitelib=/usr/local/share/perl/5.12.4 > -Dsitearch=/usr/local/lib/perl/5.12.4 -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.12.4 -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 > -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include > -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', > optimize='-O2 -g', > cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN > -fno-strict-aliasing > -pipe -fstack-protector -I/usr/local/include' > ccversion='', gccversion='4.6.1', 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.12.4 > gnulibc_version='2.13' > Dynamic Linking: > dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' > cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib > -fstack-protector' > > Locally applied patches: > > > --- > @INC for perl 5.12.4: > /home/jima/local/share/perl/5.12.4 > /home/jima/local/share/perl > /home/jima/lib/perl > /etc/perl > /usr/local/lib/perl/5.12.4 > /usr/local/share/perl/5.12.4 > /usr/lib/perl5 > /usr/share/perl5 > /usr/lib/perl/5.12 > /usr/share/perl/5.12 > /usr/local/lib/site_perl > . > > --- > Environment for perl 5.12.4: > HOME=/home/jima > LANG=en_US.UTF-8 > LANGUAGE (unset) > LD_LIBRARY_PATH=/home/jima/local/lib > LOGDIR (unset) > >
PATH=/home/jima/bin:/home/jima/local/bin:/home/jima/jima_tools/x86_64/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/bin/X11:/usr/local/bin:/opt/openoffice.org3/program:/usr/local/games:/usr/games:. Show quoted text
> PERL5LIB=/home/jima/local/share/perl:/home/jima/lib/perl > PERL_BADLANG (unset) > SHELL=/bin/bash
-- Father Chrysostomos
CC: perl5-porters [...] perl.org
Subject: Re: [perl #113090] Data::Dumper -- undef not recognized as "false" in config booleans
Date: Sun, 27 May 2012 08:00:40 +0200
To: perlbug-followup [...] perl.org
From: demerphq <demerphq [...] gmail.com>
Download (untitled) / with headers
text/plain 1.1k
On 26 May 2012 06:56, Father Chrysostomos via RT <perlbug-followup@perl.org> wrote: Show quoted text
> On Fri May 25 21:30:52 2012, jimav wrote:
>> >> This is a bug report for perl from james_avera@yahoo.com, >> generated with the help of perlbug 1.39 running under perl 5.12.4. >> >> ----------------------------------------------------------------- >> Some of Data::Dumper's configuration methods accept "boolean" >> arguments.  However passing undef for "false" causes incorrect >> behavior (the methods return the old value rather than setting >> a new value). >> >> This is not a big deal, but if you want to make them accept undef >> as a valid form of "false", here is a patch:
> > > I think this is a good idea, and that Freezer and Toaster should also > get the same change, so that ->Freezer(undef) becomes the same as > ->Freezer(""). > > Could you perhaps include some tests for this?  Also, please note that > your patch is reversed. :-)
We should check that this does not interact with the dynamically scoped var equivalents. I have a feeling it might in subtle ways. Yves -- perl -Mre=debug -e "/just|another|perl|hacker/"
Subject: Re: [perl #113090] Data::Dumper -- undef not recognized as "false" in config booleans
Date: Sat, 26 May 2012 14:32:24 -0700
To: perlbug-followup [...] perl.org
From: Jim Avera <james_avera [...] yahoo.com>
Download (untitled) / with headers
text/plain 237b
Sorry about the reversed patch. A corrected patch (including Freezer & Toaster) is attached. I have used the modified code, but not exhaustively tested every method. Does a test suite already exist somewhere (as with CPAN modules)?
Download patch.txt
text/plain 1.8k

Message body is not shown because sender requested not to inline it.

Date: Tue, 12 Dec 2017 03:35:35 +0000
To: perl5-porters [...] perl.org
From: Zefram <zefram [...] fysh.org>
Subject: Re: [perl #113090] Data::Dumper -- undef not recognized as "false" in config booleans
Fixed by commit dd9e86b4501b7c8aeba1f5ebda9f8907747c443f. -zefram


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