#!/usr/bin/perl use strict; use warnings; my @data = ( '$?/1dlw&', '*%1sdh^?', '@/!1dlw\\/', '$£1cgi*&', '?@1sdh%&', '~#1xnf$%' ); my @patterns = qw/1dlw 1sdh 1cgi 1xnf/; my $re = join "|", map quotemeta, @patterns; my %seen; /($re)/ and $seen{$1}++ for (@data); my $unique = join "|", map quotemeta, grep { $seen{$_} == 1 } @patterns; my @unique = grep { /$unique/ } @data;