#!/bin/perl -w use strict; my %unique_names; # this is the hash while( ) { 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 about the value, just the key } my @unique_names= keys %unique_names; # put the names back into an 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