I have an array that has multiple entries of the same element in it. I want to make a new array with just the unique elements in it. How can this be done?

Pretty much every time you see the word "unique" in a problem, you want a hash. For this, I'd take a two-pass approach: tally the elements of the array, then pick out the unique ones. So:

my %elem_count = (); for my $elem (@array) { $elem_count{$elem}++; } my @uniques = (); for my $elem (keys %elem_count) { push @uniques, $elem if $elem_count{$elem} == 1; }

So (to be brutally obvious) we're storing the number of times we see each element in the hash %elem_count, then going through %elem_count key by key, picking out the ones that have a count of 1. (Of course, you can do the first bit at the same time as you're inserting elements in the array, which may or may not be practical.)

As for your second question, I confess I don't really see the problem. Unless you've been mucking around with $/, $_ will contain the line you just read in at every pass through the while.

--
:wq

In reply to Re: Deciding unique elements of an array by FoxtrotUniform
in thread Deciding unique elements of an array by Spliter

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.