in reply to Re: Re: Arrays
in thread Comparing Two Arrays
This just creates a new, empty, associative array.my %hash = ();
In this single line, the associative array has effectively@hash{ @array1, @array2 } = ();
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
|
|---|