my @ICE = map { [ split /\s*\(tab\)\s*/ ] } ; my %seen; my @ICEU = grep { !$seen{$_->[0]}++ } @ICE; print Dumper \@ICE; print Dumper \%seen; __DATA__ 30F-WKS(tab)`1781183799.xxxx1' (tab) IC---; 30F-WKS (tab) `1781183799.xxx11' (tab) IC---; ADM34A3F9 (tab) `1781183799.41455' (tab) IC---;