my @list = qw(AGCT AGGT GG AGCT); MAIN: for my $i (0..$#list) { my $substr_re = qr/$list[$i]/; for my $j (0..$#list) { next if $i == $j || ! defined $list[$j]; if ($list[$j] =~ $substr_re) { undef $list[$i]; next MAIN; } } } my @unique = grep {defined} @list; print "$_\n" for @unique;