This is not what the function is supposed to do. Take a look at the source code. It only understands the first level of your AoA. Copy and paste, modify a little bit:

use Data::Dumper; my @AoA = (['a','b','c'], ['a','b','c'], ['a','b','d'], ['a','b','d']); my @uAoA = uniq(@AoA); sub uniq () { #updated, the prototype was taken out my %h; map { $h{$_}++ == 0 ? $_ : () } @_; print Dumper \%h; }

Run it , you get print out similar to this:

$VAR1 = { 'ARRAY(0x224ff8)' => 1, 'ARRAY(0x18c3a2c)' => 1, 'ARRAY(0x1875904)' => 1, 'ARRAY(0x224ef0)' => 1 };

Now it is obvious, all those four elements of the LIST are different and uniqe, and that's why the entire original AOA is returned.

Update:

Just to extend a little bit. uniq will work with this code, base on the way the AoA is formed. The input AoA is logically equal to your AoA. And the output is now the same as what you wanted. (I am not saying that this is a solution for you, as you probably cannot form your data like this or cannot do it easily. This only demos the nature of uniq(). )

use Data::Dumper; use List::MoreUtils qw(uniq); use strict; use warnings; my $a = ['a','b','c']; my $b = ['a','b','d']; my @AoA = ($a, $a, $b, $b); my @uAoA = uniq(@AoA); print Dumper(\@uAoA);

Why does it work? Because the uniq function sees two uniq array refs.


In reply to Re: Fast Way to Return Unique Array of Array by pg
in thread Fast Way to Return Unique Array of Array by neversaint

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.