The issue with my @mergedkeys = keys %{{@array1, @array2}} is that your assignment does not include values for the keys. This can be fixed using map:

my @mergedkeys = keys %{{map {$_ => 1} @array1, @array2}};

However: assuming this code will have to be maintained, consider that what is slick today maybe wholly obscure next month. Rather than using this, I'd recommend using List::MoreUtils' uniq to accomplish this. Its intent will be much more obvious on casual inspection. As well, it will respect order, if that matters to your application.

On the topic of "eliminat[ing] the temporary hash", you can use scoping the get Perl to to the work for you. Just declare your temporary hash with my in a code block and it will go out of scope and be garbage collected once you exit the block. Something like:

TEMP_HASH_BLOCK: { my %temphash; @temphash{@array1} = (); delete @temphash{@array1}; my @newarray = keys %temphash; }

or use do (or a subroutine) if you need to export:

my @newarray = do { my %temphash; @temphash{@array1} = (); delete @temphash{@array1}; keys %temphash; };

In reply to Re: Merge arrays - seeking slicker approach by kennethk
in thread Merge arrays - seeking slicker approach by puterboy

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.