Skip Menu |
Report information
Id: 113090
Status: resolved
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
Download (untitled) / with headers
text/plain 317b
Thank you for filing this report. You have helped make Perl better. With the release yesterday of Perl 5.28.0, this and 185 other issues have been resolved. Perl 5.28.0 may be downloaded via: https://metacpan.org/release/XSAWYERX/perl-5.28.0 If you find that the problem persists, feel free to reopen this ticket.


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