in reply to unique elements in an array

You could use grep to determine if the element already exists in the array. However it may be easier to use a hash. If the items you are working with are simple scalars (aka not references) assigning them as keys in a hash will assure you end up with a unique list. If you do not want to go that way, I have a few standard subroutines I use to find unique elements from a list. One (which is faster) will only work for simple string values, the second will work even when the list contains references. Here they are:

#_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-_-_-_-_ # Function: uniqStrings() # Author: Dave Mueller # Returns: @uniq # Parameters: @array # Description: Returns a unique list of all Strings found in @array # Note: references wil be broken . . . #_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-_-_-_-_ sub uniqStrings { my %temp = (); @temp{@_} = (); return keys %temp; } #_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-_-_-_-_ # Function: uniqValues() # Author: Dave Mueller # Returns: @uniq # Parameters: @array # Description: Returns a unique list of all values found in @array #_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ +-_-_-_-_ sub uniqValues { my %temp = (); @temp{@_} = (0 .. $#_); return map({$_[$_]} values %temp); }
May the Force be with you