in reply to More efficient way to get uniq list elements from list of lists

In the first place you could have replaced push @vertices with $unique{ $edges[$i][$j] } = undef and then you don't have to mess with shoehorning @uniqv into a hash just to pull out the keys.

Abstracting out the edges and vertices, what I see is going on is, you have a list of lists, and you just want the elements that are unique across the whole thing.

I would do something like:

sub unique_elements { my ( %unique ); # @_ could be large, so I don't want to put the list in memory, or + even put a list of indices into mem like you do with 0 .. $#_ for ( my $i = 0; $i < @_; $i++ ) { # but the inner lists are a small fixed size, so even though t +he sollution is generalized, the inner values I do just stick in a li +st, which I use for a hash slice to autovivify the keys @unique{@{$_[$i]}} = undef; # black magic warning! the first e +lement in the slice is assigned undef, and the rest are autovivfied } return sort keys %unique; }

--
Snazzy tagline here