It would help if you could define what you mean by "works fine" and "fails", ideally by giving an sscce.

According to the docs, the intention when supplying [*value] is that the output will assign a name appropriate to the type of the value: if you give it a hashref to dump, it will assume it actually represents a hash called %value, for example. It appears this has been broken for a long time, and was recently fixed - a quick scan of the Changes file (https://metacpan.org/dist/Data-Dumper/changes) suggests it may have been the very recent 2.182_51 change.

With latest bleadperl (which has v2.184, not yet available on CPAN), I get:

% perl -MData::Dumper -e ' my %h = (one => 1); $h{refone} = \$h{one}; # make it a self-referential structure my $d = Data::Dumper->new([\%h], [*value]); $d->Indent(1); $d->Terse(1); $d->Sortkeys(1); print $d->Dump; ' ( 'one' => 1, 'refone' => \$main::value{'one'} )

.. which I believe is the correct intended output. With older versions (back at least as far as maint-5.8) I get instead:

{ 'one' => 1, 'refone' => \$VAR1->{'one'} }

.. which is wrong, since it refers to $VAR1 instead of to %value.

By changing it to \[*value] I guess you have turned it into something Dump() does not recognise, so it ignores it. The result is that you get the same output as the previous broken behaviour. You can achieve the same by removing the [*value] arrayref altogether.

(I'm slightly worried that the changelog states that this was a fix only for the XS code: additionally calling $d->Useperl(1) before the Dump() call does not change the output in either case for me, so it's possible I'm completely misunderstanding what's going on.)

Hugo


In reply to Re: BackupPC or Data::Dumper playing foul...? by hv
in thread BackupPC or Data::Dumper playing foul...? by Krambambuli

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.