That's the nature of references. They refer to some other thing which exists somewhere else.  If you copy just the reference (by pushing it onto the array), that copy will still refer to the same old thing.

You have to create a new data structure for each new set of info:

my ($title, $text, ...) = split /:/; push @a, { TITLE => $title, TEXT => $text, ... };

Also search CPAN for various modules that allow making deep copies of data structures.


In reply to Re: the ref use the same memory when i push structure onto array? Gahh .. please help me dear perl-gurus by almut
in thread the ref use the same memory when i push structure onto array? Gahh .. please help me dear perl-gurus by theantler

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.