in reply to Re: Re: Arrays
in thread Comparing Two Arrays

Let me explain this (I've noticed that non-iterative
solutions are often odd-looking because they have no
cognate in the non-perl world):
my %hash = ();
This just creates a new, empty, associative array.
@hash{ @array1, @array2 } = ();
In this single line, the associative array has effectively
removed the duplicates from @array1 and @array2 for free.

This is a list assignment; that is, this single line
assigns into multiple keys. Just as $hash{$foo} = 0
creates a string key from $foo in the hash %hash,
so @hash{ @array } creates a bunch of keys, whose
members are named in @array, in the hash %hash. Also,
since two arrays mashed together form one big array--
that is, (@a1,@a2,@a3) becomes one flat array-- so then
the assignment @hash{ @array1, @array2 } creates string
keys out of each element in the arrays for %hash.
Since we know that keys are by nature unique, the
hashtable has removed the duplicates for us, for free!
So, now all there is left to do is extract the keys
from the hashtable:

@array3 = keys %hash;

...and we're done.

Rob