Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Data::Dumper will not correctly create eval-able code for self-referential structures #11780

Open
p5pRT opened this issue Nov 29, 2011 · 7 comments
Labels
dist-Data-Dumper issues in the dual-life blead-first Data-Dumper distribution type-library Wishlist

Comments

@p5pRT
Copy link

p5pRT commented Nov 29, 2011

Migrated from rt.perl.org#104906 (status was 'open')

Searchable as RT104906$

@p5pRT
Copy link
Author

p5pRT commented Nov 29, 2011

From goldstei@ugcs.caltech.edu

Created by goldstei@ugcs.caltech.edu

I've noticed that Data​::Dumper does not always create ouput that will eval
correctly for self-referential structures, even if Purity=1.

For example, take this code​:

====================
use Data​::Dumper;

my $h = {b => 1};
my $m = {c => $h};
$h->{d} = $m;
$h->{a}[0] = $m;
$Data​::Dumper​::Purity = 1;
print Dumper($h) . "\n";
my $s = Dumper($h);
my $a = eval $s;
print Dumper($a);

This produces the output​:

====================
$VAR1 = {
  'a' => [
  {
  'c' => {}
  }
  ],
  'b' => 1,
  'd' => {}
  };
$VAR1->{'a'}[0]{'c'} = $VAR1;
$VAR1->{'d'} = $VAR1->{'a'}[0];

$VAR1 = {
  'c' => {
  'a' => [
  {}
  ],
  'b' => 1,
  'd' => {}
  }
  };
$VAR1->{'c'}{'a'}[0] = $VAR1;
$VAR1->{'c'}{'d'} = $VAR1;

Note that the first outputs $h, while the second outputs $m. This is because,
as the 'eval' function description states​:

"In both forms, the value returned is the value of the last expression
evaluated inside the mini-program; a return statement may be also used, just as
with subroutines. The expression providing the return value is evaluated in
void, scalar, or list context, depending on the context of the eval itself."

The correct output could be obtained by adding a '$VAR1' at the end of the
structure, whenever the structure is self-referential.

This issue also appears to be present as late as perl 5.12.4.

Perl Info

Flags:
    category=library
    severity=low
    module=Data::Dumper

Site configuration information for perl 5.10.1:

Configured by Debian Project at Thu Jun 30 22:25:10 UTC 2011.

Summary of my perl5 (revision 5 version 10 subversion 1) configuration:
   
  Platform:
    osname=linux, osvers=2.6.32-5-amd64, archname=x86_64-linux-gnu-thread-multi
    uname='linux brahms 2.6.32-5-amd64 #1 smp tue jun 14 09:42:28 utc 2011 x86_64 gnulinux '
    config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.10 -Darchlib=/usr/lib/perl/5.10 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.10.1 -Dsitearch=/usr/local/lib/perl/5.10.1 -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 -Ud_ualarm -Uusesfio -Uusenm -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.10.1 -Dd_dosuid -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.4.5', 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 /usr/lib /lib64 /usr/lib64
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=/lib/libc-2.11.2.so, so=so, useshrplib=true, libperl=libperl.so.5.10.1
    gnulibc_version='2.11.2'
  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:
    DEBPKG:debian/arm_thread_stress_timeout - http://bugs.debian.org/501970 Raise the timeout of ext/threads/shared/t/stress.t to accommodate slower build hosts
    DEBPKG:debian/cpan_config_path - Set location of CPAN::Config to /etc/perl as /usr may not be writable.
    DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN.
    DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove overly restrictive DB_File version check.
    DEBPKG:debian/doc_info - Replace generic man(1) instructions with Debian-specific information.
    DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @INC directories.
    DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes.
    DEBPKG:debian/extutils_hacks - Various debian-specific ExtUtils changes
    DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets.
    DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor.
    DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy.
    DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.
    DEBPKG:debian/m68k_thread_stress - http://bugs.debian.org/495826 Disable some threads tests on m68k for now due to missing TLS.
    DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian
    DEBPKG:debian/module_build_man_extensions - http://bugs.debian.org/479460 Adjust Module::Build manual page extensions for the Debian Perl policy
    DEBPKG:debian/perl_synopsis - http://bugs.debian.org/278323 Rearrange perl.pod
    DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need.
    DEBPKG:debian/use_gdbm - Explicitly link against -lgdbm_compat in ODBM_File/NDBM_File. 
    DEBPKG:fixes/assorted_docs - http://bugs.debian.org/443733 [384f06a] Math::BigInt::CalcEmu documentation grammar fix
    DEBPKG:fixes/net_smtp_docs - http://bugs.debian.org/100195 [rt.cpan.org #36038] Document the Net::SMTP 'Port' option
    DEBPKG:fixes/processPL - http://bugs.debian.org/357264 [rt.cpan.org #17224] Always use PERLRUNINST when building perl modules.
    DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local
    DEBPKG:fixes/pod2man-index-backslash - http://bugs.debian.org/521256 Escape backslashes in .IX entries
    DEBPKG:debian/disable-zlib-bundling - Disable zlib bundling in Compress::Raw::Zlib
    DEBPKG:fixes/kfreebsd_cppsymbols - http://bugs.debian.org/533098 [3b910a0] Add gcc predefined macros to $Config{cppsymbols} on GNU/kFreeBSD.
    DEBPKG:debian/cpanplus_definstalldirs - http://bugs.debian.org/533707 Configure CPANPLUS to use the site directories by default.
    DEBPKG:debian/cpanplus_config_path - Save local versions of CPANPLUS::Config::System into /etc/perl.
    DEBPKG:fixes/kfreebsd-filecopy-pipes - http://bugs.debian.org/537555 [16f708c] Fix File::Copy::copy with pipes on GNU/kFreeBSD
    DEBPKG:fixes/anon-tmpfile-dir - http://bugs.debian.org/528544 [perl #66452] Honor TMPDIR when open()ing an anonymous temporary file
    DEBPKG:fixes/abstract-sockets - http://bugs.debian.org/329291 [89904c0] Add support for Abstract namespace sockets.
    DEBPKG:fixes/hurd_cppsymbols - http://bugs.debian.org/544307 [eeb92b7] Add gcc predefined macros to $Config{cppsymbols} on GNU/Hurd.
    DEBPKG:fixes/autodie-flock - http://bugs.debian.org/543731 Allow for flock returning EAGAIN instead of EWOULDBLOCK on linux/parisc
    DEBPKG:fixes/archive-tar-instance-error - http://bugs.debian.org/539355 [rt.cpan.org #48879] Separate Archive::Tar instance error strings from each other
    DEBPKG:fixes/positive-gpos - http://bugs.debian.org/545234 [perl #69056] [c584a96] Fix \\G crash on first match
    DEBPKG:debian/devel-ppport-ia64-optim - http://bugs.debian.org/548943 Work around an ICE on ia64
    DEBPKG:fixes/trie-logic-match - http://bugs.debian.org/552291 [perl #69973] [0abd0d7] Fix a DoS in Unicode processing [CVE-2009-3626]
    DEBPKG:fixes/hppa-thread-eagain - http://bugs.debian.org/554218 make the threads-shared test suite more robust, fixing failures on hppa
    DEBPKG:fixes/crash-on-undefined-destroy - http://bugs.debian.org/564074 [perl #71952] [1f15e67] Fix a NULL pointer dereference when looking for a DESTROY method
    DEBPKG:fixes/tainted-errno - http://bugs.debian.org/574129 [perl #61976] [be1cf43] fix an errno stringification bug in taint mode
    DEBPKG:fixes/safe-upgrade - http://bugs.debian.org/582978 Upgrade Safe.pm to 2.25, fixing CVE-2010-1974
    DEBPKG:fixes/tell-crash - http://bugs.debian.org/578577 [f4817f3] Fix a tell() crash on bad arguments.
    DEBPKG:fixes/format-write-crash - http://bugs.debian.org/579537 [perl #22977] [421f30e] Fix a crash in format/write
    DEBPKG:fixes/arm-alignment - http://bugs.debian.org/289884 [f1c7503] Prevent gcc from optimizing the alignment test away on armel
    DEBPKG:fixes/fcgi-test - Fix a failure in CGI/t/fast.t when FCGI is installed
    DEBPKG:fixes/hurd-ccflags - http://bugs.debian.org/587901 Make hints/gnu.sh append to $ccflags rather than overriding them
    DEBPKG:debian/squelch-locale-warnings - http://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts
    DEBPKG:fixes/lc-numeric-docs - http://bugs.debian.org/379329 [perl #78452] [903eb63] LC_NUMERIC documentation fixes
    DEBPKG:fixes/lc-numeric-sprintf - http://bugs.debian.org/601549 [perl #78632] [b3fd614] Fix sprintf not to ignore LC_NUMERIC with constants
    DEBPKG:fixes/concat-stack-corruption - http://bugs.debian.org/596105 [perl #78674] [e3393f5] Fix stack pointer corruption in pp_concat() with 'use encoding'
    DEBPKG:fixes/cgi-multiline-header - http://bugs.debian.org/606995 [CVE-2010-2761 CVE-2010-4410 CVE-2010-4411] CGI.pm MIME boundary and multiline header vulnerabilities
    DEBPKG:fixes/casing-taint-cve-2011-1487 - http://bugs.debian.org/622817 [perl #87336] fix unwanted taint laundering in lc(), uc() et al.
    DEBPKG:fixes/safe-reval-rdo-cve-2010-1447 - [PATCH] Wrap by default coderefs returned by rdo and reval
    DEBPKG:patchlevel - http://bugs.debian.org/567489 List packaged patches for 5.10.1-17squeeze2 in patchlevel.h


@INC for perl 5.10.1:
    /etc/perl
    /usr/local/lib/perl/5.10.1
    /usr/local/share/perl/5.10.1
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.10
    /usr/share/perl/5.10
    /usr/local/lib/site_perl
    .


Environment for perl 5.10.1:
    HOME=/afs/.ugcs/user/goldstei
    LANG=en_US.UTF-8
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/afs/.ugcs/user/goldstei/ugcs2/scripts:/usr/ug/bin:/usr/ug/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/ug/adm/bin/scripts:/ug/adm/bin/:/usr/X11R6/bin:/afs/.ugcs/user/goldstei/bin:/afs/.ugcs/user/goldstei/maple10/bin:/mnt/cresol/cresol/ufs/egnor/i386-linux2/bin:/usr/ug/share/scripts:/afs/.ugcs/user/goldstei/ugcs2/scripts:/usr/ug/bin:/usr/ug/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/ug/adm/bin/scripts:/ug/adm/bin/:/usr/X11R6/bin:/afs/.ugcs/user/goldstei/bin:/afs/.ugcs/user/goldstei/maple10/bin:/mnt/cresol/cresol/ufs/egnor/i386-linux2/bin:/usr/ug/share/scripts:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
    PERL_BADLANG (unset)
    SHELL=/bin/zsh

@p5pRT
Copy link
Author

p5pRT commented Nov 30, 2011

From zefram@fysh.org

goldstei@​ugcs.caltech.edu wrote​:

I've noticed that Data​::Dumper does not always create ouput that will eval
correctly for self-referential structures, even if Purity=1.
...
my $s = Dumper($h);
my $a = eval $s;

Data​::Dumper doesn't actually claim that the eval will return the
structure, only that it will *recreate* it. Which it did​: it assigned
it to $VAR1. Try

  my $VAR1;
  eval $s;
  my $a = $VAR1;

The documentation could do with clarification on this point.

-zefram

@p5pRT
Copy link
Author

p5pRT commented Nov 30, 2011

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Nov 30, 2011

From @demerphq

Not a bug. Data​::Dumper doesn't say it does this.

You can easily use Data​::Dumper in a way it does not matter.

For instance

my $dump= 'do{' . Data​::Dumper->new([$x,$y,$z], [qw($x $y
$z)])->Purity(1)->Dump() . ' ($x,$y,$z) }'

cheers,
yves

On 29 November 2011 22​:25, goldstei@​ugcs.caltech.edu
<perlbug-followup@​perl.org> wrote​:

# New Ticket Created by  goldstei@​ugcs.caltech.edu
# Please include the string​:  [perl #104906]
# in the subject line of all future correspondence about this issue.
# <URL​: https://rt-archive.perl.org/perl5/Ticket/Display.html?id=104906 >

This is a bug report for perl from goldstei@​ugcs.caltech.edu,
generated with the help of perlbug 1.39 running under perl 5.10.1.

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

I've noticed that Data​::Dumper does not always create ouput that will eval
correctly for self-referential structures, even if Purity=1.

For example, take this code​:

====================
use Data​::Dumper;

my $h = {b => 1};
my $m = {c => $h};
$h->{d} = $m;
$h->{a}[0] = $m;
$Data​::Dumper​::Purity = 1;
print Dumper($h) . "\n";
my $s = Dumper($h);
my $a = eval $s;
print Dumper($a);

This produces the output​:

====================
$VAR1 = {
         'a' => [
                  {
                    'c' => {}
                  }
                ],
         'b' => 1,
         'd' => {}
       };
$VAR1->{'a'}[0]{'c'} = $VAR1;
$VAR1->{'d'} = $VAR1->{'a'}[0];

$VAR1 = {
         'c' => {
                  'a' => [
                           {}
                         ],
                  'b' => 1,
                  'd' => {}
                }
       };
$VAR1->{'c'}{'a'}[0] = $VAR1;
$VAR1->{'c'}{'d'} = $VAR1;

Note that the first outputs $h, while the second outputs $m. This is because,
as the 'eval' function description states​:

"In both forms, the value returned is the value of the last expression
evaluated inside the mini-program; a return statement may be also used, just as
with subroutines. The expression providing the return value is evaluated in
void, scalar, or list context, depending on the context of the eval itself."

The correct output could be obtained by adding a '$VAR1' at the end of the
structure, whenever the structure is self-referential.

This issue also appears to be present as late as perl 5.12.4.

[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags​:
   category=library
   severity=low
   module=Data​::Dumper
---
Site configuration information for perl 5.10.1​:

Configured by Debian Project at Thu Jun 30 22​:25​:10 UTC 2011.

Summary of my perl5 (revision 5 version 10 subversion 1) configuration​:

 Platform​:
   osname=linux, osvers=2.6.32-5-amd64, archname=x86_64-linux-gnu-thread-multi
   uname='linux brahms 2.6.32-5-amd64 #1 smp tue jun 14 09​:42​:28 utc 2011 x86_64 gnulinux '
   config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.10 -Darchlib=/usr/lib/perl/5.10 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.10.1 -Dsitearch=/usr/local/lib/perl/5.10.1 -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 -Ud_ualarm -Uusesfio -Uusenm -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.10.1 -Dd_dosuid -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.4.5', 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 /usr/lib /lib64 /usr/lib64
   libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
   perllibs=-ldl -lm -lpthread -lc -lcrypt
   libc=/lib/libc-2.11.2.so, so=so, useshrplib=true, libperl=libperl.so.5.10.1
   gnulibc_version='2.11.2'
 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​:
   DEBPKG​:debian/arm_thread_stress_timeout - http​://bugs.debian.org/501970 Raise the timeout of ext/threads/shared/t/stress.t to accommodate slower build hosts
   DEBPKG​:debian/cpan_config_path - Set location of CPAN​::Config to /etc/perl as /usr may not be writable.
   DEBPKG​:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN.
   DEBPKG​:debian/db_file_ver - http​://bugs.debian.org/340047 Remove overly restrictive DB_File version check.
   DEBPKG​:debian/doc_info - Replace generic man(1) instructions with Debian-specific information.
   DEBPKG​:debian/enc2xs_inc - http​://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @​INC directories.
   DEBPKG​:debian/errno_ver - http​://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes.
   DEBPKG​:debian/extutils_hacks - Various debian-specific ExtUtils changes
   DEBPKG​:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets.
   DEBPKG​:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor.
   DEBPKG​:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy.
   DEBPKG​:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.
   DEBPKG​:debian/m68k_thread_stress - http​://bugs.debian.org/495826 Disable some threads tests on m68k for now due to missing TLS.
   DEBPKG​:debian/mod_paths - Tweak @​INC ordering for Debian
   DEBPKG​:debian/module_build_man_extensions - http​://bugs.debian.org/479460 Adjust Module​::Build manual page extensions for the Debian Perl policy
   DEBPKG​:debian/perl_synopsis - http​://bugs.debian.org/278323 Rearrange perl.pod
   DEBPKG​:debian/prune_libs - http​://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need.
   DEBPKG​:debian/use_gdbm - Explicitly link against -lgdbm_compat in ODBM_File/NDBM_File.
   DEBPKG​:fixes/assorted_docs - http​://bugs.debian.org/443733 [384f06a] Math​::BigInt​::CalcEmu documentation grammar fix
   DEBPKG​:fixes/net_smtp_docs - http​://bugs.debian.org/100195 [rt.cpan.org #36038] Document the Net​::SMTP 'Port' option
   DEBPKG​:fixes/processPL - http​://bugs.debian.org/357264 [rt.cpan.org #17224] Always use PERLRUNINST when building perl modules.
   DEBPKG​:debian/perlivp - http​://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local
   DEBPKG​:fixes/pod2man-index-backslash - http​://bugs.debian.org/521256 Escape backslashes in .IX entries
   DEBPKG​:debian/disable-zlib-bundling - Disable zlib bundling in Compress​::Raw​::Zlib
   DEBPKG​:fixes/kfreebsd_cppsymbols - http​://bugs.debian.org/533098 [3b910a0] Add gcc predefined macros to $Config{cppsymbols} on GNU/kFreeBSD.
   DEBPKG​:debian/cpanplus_definstalldirs - http​://bugs.debian.org/533707 Configure CPANPLUS to use the site directories by default.
   DEBPKG​:debian/cpanplus_config_path - Save local versions of CPANPLUS​::Config​::System into /etc/perl.
   DEBPKG​:fixes/kfreebsd-filecopy-pipes - http​://bugs.debian.org/537555 [16f708c] Fix File​::Copy​::copy with pipes on GNU/kFreeBSD
   DEBPKG​:fixes/anon-tmpfile-dir - http​://bugs.debian.org/528544 [perl #66452] Honor TMPDIR when open()ing an anonymous temporary file
   DEBPKG​:fixes/abstract-sockets - http​://bugs.debian.org/329291 [89904c0] Add support for Abstract namespace sockets.
   DEBPKG​:fixes/hurd_cppsymbols - http​://bugs.debian.org/544307 [eeb92b7] Add gcc predefined macros to $Config{cppsymbols} on GNU/Hurd.
   DEBPKG​:fixes/autodie-flock - http​://bugs.debian.org/543731 Allow for flock returning EAGAIN instead of EWOULDBLOCK on linux/parisc
   DEBPKG​:fixes/archive-tar-instance-error - http​://bugs.debian.org/539355 [rt.cpan.org #48879] Separate Archive​::Tar instance error strings from each other
   DEBPKG​:fixes/positive-gpos - http​://bugs.debian.org/545234 [perl #69056] [c584a96] Fix \\G crash on first match
   DEBPKG​:debian/devel-ppport-ia64-optim - http​://bugs.debian.org/548943 Work around an ICE on ia64
   DEBPKG​:fixes/trie-logic-match - http​://bugs.debian.org/552291 [perl #69973] [0abd0d7] Fix a DoS in Unicode processing [CVE-2009-3626]
   DEBPKG​:fixes/hppa-thread-eagain - http​://bugs.debian.org/554218 make the threads-shared test suite more robust, fixing failures on hppa
   DEBPKG​:fixes/crash-on-undefined-destroy - http​://bugs.debian.org/564074 [perl #71952] [1f15e67] Fix a NULL pointer dereference when looking for a DESTROY method
   DEBPKG​:fixes/tainted-errno - http​://bugs.debian.org/574129 [perl #61976] [be1cf43] fix an errno stringification bug in taint mode
   DEBPKG​:fixes/safe-upgrade - http​://bugs.debian.org/582978 Upgrade Safe.pm to 2.25, fixing CVE-2010-1974
   DEBPKG​:fixes/tell-crash - http​://bugs.debian.org/578577 [f4817f3] Fix a tell() crash on bad arguments.
   DEBPKG​:fixes/format-write-crash - http​://bugs.debian.org/579537 [perl #22977] [421f30e] Fix a crash in format/write
   DEBPKG​:fixes/arm-alignment - http​://bugs.debian.org/289884 [f1c7503] Prevent gcc from optimizing the alignment test away on armel
   DEBPKG​:fixes/fcgi-test - Fix a failure in CGI/t/fast.t when FCGI is installed
   DEBPKG​:fixes/hurd-ccflags - http​://bugs.debian.org/587901 Make hints/gnu.sh append to $ccflags rather than overriding them
   DEBPKG​:debian/squelch-locale-warnings - http​://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts
   DEBPKG​:fixes/lc-numeric-docs - http​://bugs.debian.org/379329 [perl #78452] [903eb63] LC_NUMERIC documentation fixes
   DEBPKG​:fixes/lc-numeric-sprintf - http​://bugs.debian.org/601549 [perl #78632] [b3fd614] Fix sprintf not to ignore LC_NUMERIC with constants
   DEBPKG​:fixes/concat-stack-corruption - http​://bugs.debian.org/596105 [perl #78674] [e3393f5] Fix stack pointer corruption in pp_concat() with 'use encoding'
   DEBPKG​:fixes/cgi-multiline-header - http​://bugs.debian.org/606995 [CVE-2010-2761 CVE-2010-4410 CVE-2010-4411] CGI.pm MIME boundary and multiline header vulnerabilities
   DEBPKG​:fixes/casing-taint-cve-2011-1487 - http​://bugs.debian.org/622817 [perl #87336] fix unwanted taint laundering in lc(), uc() et al.
   DEBPKG​:fixes/safe-reval-rdo-cve-2010-1447 - [PATCH] Wrap by default coderefs returned by rdo and reval
   DEBPKG​:patchlevel - http​://bugs.debian.org/567489 List packaged patches for 5.10.1-17squeeze2 in patchlevel.h

---
@​INC for perl 5.10.1​:
   /etc/perl
   /usr/local/lib/perl/5.10.1
   /usr/local/share/perl/5.10.1
   /usr/lib/perl5
   /usr/share/perl5
   /usr/lib/perl/5.10
   /usr/share/perl/5.10
   /usr/local/lib/site_perl
   .

---
Environment for perl 5.10.1​:
   HOME=/afs/.ugcs/user/goldstei
   LANG=en_US.UTF-8
   LANGUAGE (unset)
   LD_LIBRARY_PATH (unset)
   LOGDIR (unset)
   PATH=/afs/.ugcs/user/goldstei/ugcs2/scripts​:/usr/ug/bin​:/usr/ug/sbin​:/usr/bin​:/bin​:/usr/sbin​:/sbin​:/ug/adm/bin/scripts​:/ug/adm/bin/​:/usr/X11R6/bin​:/afs/.ugcs/user/goldstei/bin​:/afs/.ugcs/user/goldstei/maple10/bin​:/mnt/cresol/cresol/ufs/egnor/i386-linux2/bin​:/usr/ug/share/scripts​:/afs/.ugcs/user/goldstei/ugcs2/scripts​:/usr/ug/bin​:/usr/ug/sbin​:/usr/bin​:/bin​:/usr/sbin​:/sbin​:/ug/adm/bin/scripts​:/ug/adm/bin/​:/usr/X11R6/bin​:/afs/.ugcs/user/goldstei/bin​:/afs/.ugcs/user/goldstei/maple10/bin​:/mnt/cresol/cresol/ufs/egnor/i386-linux2/bin​:/usr/ug/share/scripts​:/usr/local/bin​:/usr/bin​:/bin​:/usr/bin/X11​:/usr/games
   PERL_BADLANG (unset)
   SHELL=/bin/zsh

--
perl -Mre=debug -e "/just|another|perl|hacker/"

@p5pRT
Copy link
Author

p5pRT commented Dec 1, 2011

From goldstei@ugcs.caltech.edu

I agree that the documentation should be clarified to state that it will
"recreate the variable named in the dump" (such as $VAR1) rather than
recreating an assignable structure. I do think it would be cleaner if
you could simply 'eval' it directly, but I suppose it is the API
designer's call.

Yves​: I worked around this by doing exactly what you suggested before I
had even filed this bug.

--
Joshua Goldstein
goldstei@​ugcs.caltech.edu
(626)-529-6964

@p5pRT
Copy link
Author

p5pRT commented Dec 1, 2011

From @nwc10

On Wed, Nov 30, 2011 at 12​:34​:59PM -0800, Joshua Goldstein wrote​:

I agree that the documentation should be clarified to state that it will
"recreate the variable named in the dump" (such as $VAR1) rather than
recreating an assignable structure. I do think it would be cleaner if
you could simply 'eval' it directly, but I suppose it is the API
designer's call.

I can't actually see what harm would come from changing Data​::Dumper to
add 1 statement at the end to return the variable, for the case of nested
structures.

I believe that it wouldn't warn even if eval'd in void context, and the
current result of eval on the output is unspecified (and unclear, hence
this bug report). It's slightly bigger, sure. But in the grand scheme
of things?

It strikes me that with do blocks and appropriate lexicals one could even
make terse output "work" correctly for self referential structures.

Nicholas Clark

@p5pRT
Copy link
Author

p5pRT commented Dec 1, 2011

From zefram@fysh.org

Nicholas Clark wrote​:

It strikes me that with do blocks and appropriate lexicals one could even
make terse output "work" correctly for self referential structures.

This is what I'd like to see. In terse mode it makes a lot more sense
for eval to return the structure created, because there's no other way
to get at the structure. Currently terse mode just isn't useful on
anything tricky.

-zefram

@jkeenan jkeenan added dist-Data-Dumper issues in the dual-life blead-first Data-Dumper distribution and removed distro-All labels Jul 5, 2021
@xenu xenu removed the affects-5.10 label Nov 19, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dist-Data-Dumper issues in the dual-life blead-first Data-Dumper distribution type-library Wishlist
Projects
None yet
Development

No branches or pull requests

3 participants