> Further to LanX's reply:

And further to your reply ... ;-)

plain printing of the references reveals that the last are identical objects

DB<61> @ra = ({a=>1, b=>2}, {a=>1, b=>2}); DB<62> print $_ for @ra HASH(0x35a4090)HASH(0x35a3ae8) # different IDs DB<63> @ra = ({a=>1, b=>2}) x 2; DB<64> print $_ for @ra HASH(0x35a3eb0)HASH(0x35a3eb0) # same IDs DB<65>

> Update: dd works by generating source code that will reproduce the structure of the data being dumped.

... when run thru eval .

There seems to be no better generic syntax to reproduce the case of duplicated references, than stuffing a fix placeholder string into it and fixing it later.

An for completeness, here code to clone the hashes instead of copying their refs

my $value = { a=>1, b=>2 }; # curly brackets to assign hashref! $hash{$_} = { %$value } for @keys; ### or alternatively my %value = ( a=>1, b=>2 ); # round brackets to assign list! $hash{$_} = { %value } for @keys;

this kind of cloning works because % returns a list in listcontext, which is packed again into a new { hash }

DB<78> x %$value 0 'a' 1 1 2 'b' 3 2 DB<79>

debugger demo

DB<72> x @keys 0 'Prefix1=A:b:1' 1 'Prefix1=A:b:2' 2 'Prefix1=A:c:1' 3 'Prefix1=A:c:2' DB<73> x $value = {a=>1, b=>2}; 0 HASH(0x35a48e8) 'a' => 1 'b' => 2 DB<74> $hash{$_} = { %$value } for @keys; DB<75> x \%hash 0 HASH(0x3598330) 'Prefix1=A:b:1' => HASH(0x35a50b8) 'a' => 1 'b' => 2 'Prefix1=A:b:2' => HASH(0x35a4c18) # <--- differing IDs 'a' => 1 'b' => 2 'Prefix1=A:c:1' => HASH(0x35a46a8) 'a' => 1 'b' => 2 'Prefix1=A:c:2' => HASH(0x35a4a50) 'a' => 1 'b' => 2 DB<77>

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery FootballPerl is like chess, only without the dice


In reply to Re^8: Combinations of lists, etc by LanX
in thread Combinations of lists to a hash by tel2

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.