http://www.perlmonks.org?node_id=105635


in reply to creating unique list from elements in an array

The word unique nearly always call for a hash to be used. The solutiom is to extract the names, then to use them as (unique) keys to a hash.

#!/bin/perl -w use strict; my %unique_names; # this is the hash while( <DATA>) { my @values= split /\|/; # extract the fields (don't + forget to backslash the |) my @names= split /,\s*/, $values[2]; # extract the names foreach my $name (@names) { $unique_names{$name}++; } # we don't really care abou +t the value, just the key } my @unique_names= keys %unique_names; # put the names back into a +n array print join "-", @unique_names; print "\n"; __DATA__ value 1|value 2|tom, chris, dave|value 4 value 1|value 2|peter, tom, dave|value 4